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

    Problema con ricerca in array oggetti

    Salve ragazzi ho un dubbio,mi trovo a dover ricercare cn un metodo se un oggetto bus effettua una fermata...a livello implementativo come dovrei impostare la ricerca?

    es:

    public static boolean effettuaFermata(bus t, String s){


    }

    considerato che ho un costruttore bus che ha come campo anche un array di fermate?..<-->help me !

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Utilizzi un array o un ArrayList?

    Nel primo caso penso ti rimanga una sola scelta: scorrere tutto l'array dall'inizio e confrontare l'oggetto passato con i vari oggetti (tramite equals() e non ==)..trovato quello che ti interessa metti un return true; al di fuori del for il return false;

    Non mi vengono altre soluzioni al momento...

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Dipende, puoi cambiare le strutture che usi?
    In questi casi io preferisco l'uso di una mappa (Map) e una sua implementazione (HashMap)

    in particolare, creo una situazione in cui
    codice:
    Map<Chiave, Valore> map = new HashMap<Chiave, Valore>();
    mettendo come chiave il parametro che uso come metro di ricerca (in questo caso il nome fermata) e il valore è l'oggetto che mi interessa reperire rapidamente.

    Visto che stai parlando di stringhe, usare una roba del genere


    codice:
    Map<String, String> map = new HashMap<String, String>();
    garantisce accesso rapido, ma ridondanza (chiave e valore alla fine sono uguali). Dovrebbe andarti bene con

    codice:
    List<String> list = new ArrayList<String>(); 
    
    ....
    
    
    list.get(nomeFermata);
    ma solo per il fatto che usi String (che ha ben sistemate equals e hashcode)

  4. #4
    utilizzo un array, ma il mio problema è..dopo aver analizzato l'array cn il for...cm dire fermati quando trovi che la stringa s è uguale al campo fermata di un oggetto della sequenza?

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    beh un consiglio: non stai scrivendo sms, quindi "con" e non "cn", "come" e non "cm", non paghi a caratteri inviati.

    Semplicemente usi break, guarda la documentazione, break interrompe il ciclo facendoti uscire

  6. #6
    purtroppo nn posso modificare...devo cercare un algoritmo che mi restituisca true o false utilizzando i controlli sugli array di oggetti ,posso usare solo i cicli..! Miseriaccia!

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    codice:
    public boolean cerca(String param, String [] values){
       boolean found = false; 
       for (int i = 0; i < values.length; i++){
           if (param.equalsIgnoreCase(values[i])) {
                  found = true; 
                  break;
           }
       }
    return found; 
    }
    un semplice algoritmo di ricerca (inefficiente al max)

  8. #8
    Scusa ma studiare un po di teoria prima di impelagarti in problemi banali non sarebbe meglio?
    cmq pui fare in questo modo
    codice:
    public static boolean effettuaFermata(bus t, String s){
      String[] fermate = bus.getFermate();//NON SO OVVIAMENTE SE ESISTE QUESTO METODO
      for(String fermata: fermate)
     {
        if(fermata.equal(s))
        {
           return true;
        } 
     }
    return false;
    }

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.