Cercare una stringa in un ArrayList...help!!??

di il
10 risposte

Cercare una stringa in un ArrayList...help!!??

Salve ragazzi ho un problema nel cercare una stringa all'interno di un ArrayList. All'interno dell'array oltre a stringhe ci sono anche dei double e int. praticamente ho bisogno di vedere se una stringa (data in input da tastiera) sia contenuta anche nell'arraylist, ho creato un metodo per fare tutto ciò ma non funziona:
ArrayList
 ArrayList<Veicolo> vei = new ArrayList <Veicolo>();
metodo
public double sommaCM()
	{
		
		s = new Scanner(System.in);
		System.out.println("\nInserire nome del veicolo \" es. Fiat Panda\": ");
		String a = s.nextLine();
		System.out.println("\nInserire Targa \" es. A302001\": ");
		String b = s.nextLine();
		
		   for(int i = 0; i<vei.size(); i++)
		   {
		      if(vei.get(i).equals(b))
		      {
		         
		         System.out.println("trovato");
		      }
		   }
		   System.out.println("non trovato");
	return 0;
	}
	
vi ringrazio in anticipo per l'aiuto !!

10 Risposte

  • Re: Cercare una stringa in un ArrayList...help!!??

    isanet ha scritto:


    		      if(vei.get(i).equals(b))
    Se devi cercare il valore di una singola "proprietà" del Veicolo, questo che hai scritto non va bene.

    Se la proprietà è un String ed è sicuramente non-null:

    if (vei.get(i).getProprieta().equals(stringaDiRicerca)) { ..... }
  • Re: Cercare una stringa in un ArrayList...help!!??

    if (vei.get(i).getProprieta().equals(stringaDiRicerca)) { ..... }
    al posto di getProprieta() cosa dovrei mettere??
  • Re: Cercare una stringa in un ArrayList...help!!??

    isanet ha scritto:


    al posto di getProprieta() cosa dovrei mettere??
    La tua classe Veicolo avrà dei metodi getter/setter pubblici per accedere ai campi privati .. no?
    O ... hai i campi pubblici??
  • Re: Cercare una stringa in un ArrayList...help!!??

    andbin ha scritto:


    La tua classe Veicolo avrà dei metodi getter/setter pubblici per accedere ai campi privati .. no?
    O ... hai
    ho campi privati...si adesso ho capito cosa intendi ho provato e sembra funzionare...ti ringrazio per la tempestiva e funzionale risposta

    solo un'altra domanda...per fare ciò ho provato anche con il metodo contains() ma non la trova come mai??
  • Re: Cercare una stringa in un ArrayList...help!!??

    isanet ha scritto:


    per fare ciò ho provato anche con il metodo contains() ma non la trova come mai??
    Il contains() ricerca un Veicolo per "intero", non una singola proprietà. La tua classe Veicolo dovrebbe ridefinire equals() per confrontare tutti i campi significativi, affinché contains() funzioni bene.

    Ma come si è capito, a te serve cercare una singola proprietà. Quindi l'unica è: prendi il Veicolo i-esimo e prendi la proprietà xyz e verifica se ha quel valore.
  • Re: Cercare una stringa in un ArrayList...help!!??

    andbin ha scritto:


    isanet ha scritto:


    per fare ciò ho provato anche con il metodo contains() ma non la trova come mai??
    Il contains() ricerca un Veicolo per "intero", non una singola proprietà. La tua classe Veicolo dovrebbe ridefinire equals() per confrontare tutti i campi significativi, affinché contains() funzioni bene.

    Ma come si è capito, a te serve cercare una singola proprietà. Quindi l'unica è: prendi il Veicolo i-esimo e prendi la proprietà xyz e verifica se ha quel valore.
    ah ok adesso ho capito...ho provato a fare la stessa cosa di prima però non su una stringa ma su un intero e mi da errore come mai??
  • Re: Cercare una stringa in un ArrayList...help!!??

    isanet ha scritto:


    ho provato a fare la stessa cosa di prima però non su una stringa ma su un intero e mi da errore come mai??
    Con i tipi primitivi usi == (su float/double, l'uguaglianza è più critica).
    Con gli oggetti usi equals() .
  • Re: Cercare una stringa in un ArrayList...help!!??

    andbin ha scritto:


    isanet ha scritto:


    ho provato a fare la stessa cosa di prima però non su una stringa ma su un intero e mi da errore come mai??
    Con i tipi primitivi usi == (su float/double, l'uguaglianza è più critica).
    Con gli oggetti usi equals() .
    si avevo dimenticato che sui tipi primitivi si usa ==

    comunque ho bisogno di un'altro piccolo favore...ho creato un metodo che deve effettuare una ricerca (dopo aver inserito una stringa da tastiera) questa volta in una linkedkist dove ho memorizzato alcuni dati di un file di testo...la ricerca avviene senza problemi solo che ho bisogno di dire al compilatore che nel momento in cui non ci sono dati che si chiamano come la stringa inserita devi stampare qualcosa e uscire dal ciclo...vorrei farlo con un if(se la stringa non esiste all'interno del file) {stampa questo ed esci}
    non capisco come tradurre questa condizione in codice!
    c'è un modo per poterlo fare???
    il metodo è questo:
    public void autoMarca()
    	{
    		s = new Scanner(System.in);
    		System.out.println("Inserire Marca (es. Fiat): ");
    		String a = s.nextLine();
    		System.out.println("Ricerca su: "+a);
    		
    		for(int i=0; i<aaa.size(); i++)
    		{	
    			if(aaa.get(i).getMarca().equalsIgnoreCase(a))
    			{
    				String mar = aaa.get(i).getMarca();
    				String mod = aaa.get(i).getModello();
    				String col = aaa.get(i).getColore();
    				int cili = aaa.get(i).getCilindrata();
    				double pre = aaa.get(i).getPrezzo();
    				
    				 System.out.println(mar+" "+ mod+" "+col+" "+ cili+" "+pre);
    			}
    			else if(!aaa.contains(a))
    			{
    				System.out.println("no");
    			}
    			
    		}
    }
  • Re: Cercare una stringa in un ArrayList...help!!??

    isanet ha scritto:


    non capisco come tradurre questa condizione in codice!
    c'è un modo per poterlo fare???
    A livello basilare/banale (senza voler incapsulare la ricerca in un metodo apposito):
    Veicolo veicoloTrovato = null;
    
    for (Veicolo veicolo : listaVeicoli) {
        if (veicolo.getMarca().equalsIgnoreCase(marcaDaTrovare)) {
            veicoloTrovato = veicolo;
            break;
        }
    }
    
    if (veicoloTrovato != null) { ........ }
    Adattalo nel tuo programma.
  • Re: Cercare una stringa in un ArrayList...help!!??

    Ti ringrazio per le tue risposte che sono sempre al top...ho risolto il problema l'unica cosa che ho cambiato è stato: != e ho messo ==
Devi accedere o registrarti per scrivere nel forum
10 risposte