I seguenti metodi sono considerabili un filtro di ricerca in Java?? 
FinderoObj.java
codice:
package com_antomau_HotelManagement.Structure.Finder;
import com_antomau_HotelManagement.MyObjects.MyRoom;
import com_antomau_HotelManagement.MyObjects.MyHotel;
/**
* Created by Antonio Maulucci http://www.antomau.com on 09/02/17.
*/
public class FinderObj {
//variabili
MyRoom r;
MyHotel h;
public FinderObj(MyHotel h, MyRoom r)
{
this.h = h;
this.r = r;
}
public MyHotel getHotel()
{
return h;
}
public MyRoom getRoom()
{
return r;
}
public void print()
{
System.out.println(h.getSerial() + " " + r.getType());
}
}
Nella classe relativa al manager della struttura dati che sto utilizzando ho implementato questi due metodi, il primo per la ricerca di un oggetto e il secondo per la stampa dei risultati
codice:
public ArrayList<FinderObj> finder(boolean findprice, int price, boolean findtv, boolean findair, boolean findfridge, boolean findnet)
{
ArrayList<FinderObj> results = new ArrayList<FinderObj>();
//ottenere il keyset della mappa
Set<MyHotel> mySet = getSet();
//esplorare il set per ottenere la lista delle stanze per ogni hotel
for (MyHotel hh : mySet)
{
//ottengo la lista delle stanze corrispondenti all'hotel hh
RoomsList rr = theMap.get(hh);
//scorrere la lista a caccia dei dati delle singole stanze
//ottengo un iteratore per la lista
RoomsListIterator myIterator = rr.listIterator();
while (myIterator.hasNext()) //fintanto che l'iteratore rileva un'ulteriore nodo nella lista
{
MyRoom currentRoom = myIterator.next();
int found = 1; //1 if found or 0 if not found
/*
si sfrutta la moltiplicazione di 0 e 1
la variabile trovato inizialmente e' 1
se la stanza corrente corrsiponde a quella cercata il moltiplicatore viene moltiplicato * 1 > ergo il risultato non cambia
se invece la stanza corrente non rispecchia i criteri di ricerca il moltiplicatore viene moltiplicato * 0 > ergo il risultato rimarra' per sempre 0 perche'
1*1=1 trovato
1*0=0 non trovato
0*1=0 trovato
in tale modo la vriabile sara' 1 solo se tutti gli elementi sono stati trovati
*/
if (findprice)
{
if (currentRoom.getPrice() <= price) found*=1;
else found*=0;
}
if (findtv)
{
if (currentRoom.getTv()) found*=1;
else found*=0;
}
if (findair)
{
if (currentRoom.getAirConditioner()) found*=1;
else found*=0;
}
if (findfridge)
{
if (currentRoom.getFridge()) found*=1;
else found*=0;
}
if (findnet)
{
if (currentRoom.getInternet()) found*=1;
else found*=0;
}
if (found==1)
{
FinderObj foundElement = new FinderObj(hh, currentRoom);
results.add(foundElement); //se il risultato della ricerca e' 1 aggiungo la stanza corrente all'arraylist
}
}
}
System.out.println(results.toString()); //debug
return results;
}
codice:
public String findPrintResults(boolean findprice, int price, boolean findtv, boolean findair, boolean findfridge, boolean findnet)
{
ArrayList<FinderObj> results = finder(findprice, price, findtv, findair, findfridge, findnet);
String stringResults = "";
stringResults += "<html><table border\1\">";
stringResults += "<tr><th>Room type</th><th>Available rooms</th><th>Price</th><th>TV</th><th>airCond</th><th>Fridge</th><th>Internet</th></tr>";
//inserisco i risultati della ricerca in una stringa che formatta una tabella in html da impostare come argomento di una jlabel
for (FinderObj fo : results)
{
MyRoom mr = fo.getRoom();
stringResults += "<tr><td><b>Hotel:</b></td><td colspan=\"6\">" + fo.getHotel().getSerial() + " -- " + fo.getHotel().getName() + " -- " + fo.getHotel().getAddress() + " -- " + fo.getHotel().getCity() + " -- " + fo.getHotel().getCountry() + " -- " + fo.getHotel().getPhone() + " -- " + fo.getHotel().getFax() + "</td></tr>";
stringResults += "<tr><td>" + mr.getType() + "</td><td>" + mr.getNum() + "</td><td>" + mr.getPrice() + "</td><td>" + mr.getTv() + "</td><td>" + mr.getAirConditioner() + "</td><td>" + mr.getFridge() + "</td><td>" + mr.getInternet() + "</td></tr>";
}
stringResults += "</table></html>";
return stringResults;
}
La chiamata a questo metodo all'interno del main è:
codice:
myMap.findPrintResults(findprice, price, findtv, findair, findfridge, findnet)
dove myMap è la struttura dati che ho utilizzato.
Traccia completa dell'esercizio: https://github.com/myblacksloth/java...ment/README.md
Il risultato della ricerca è:
