Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Implementazione filtro di ricerca Java

    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 è:

    Ultima modifica di antomau96; 09-02-2017 a 17:54 Motivo: aggiunta di maggiori dettagli

  2. #2
    Nessuno che mi può aiutare?

  3. #3
    io penso che ti stavano già rispondendo lì.....
    https://www.iprogrammatori.it/forum-...ca-t30348.html
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  4. #4
    io penso che ti stavano già rispondendo lì.....
    https://www.iprogrammatori.it/forum-...ca-t30348.html
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  5. #5
    Si mi stavano rispondendo dandomi realmente un enorme aiuto ma al problema che ho proposto in questa pagina non mi sta rispondendo nessuno e mi servirebbe solo un parere sul mio operato

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.