Java trova elemento in ArrayList of classes with an Iterator [duplicate]
Non riesco a trovare un tutorial di questo, ogni tutorial sembra utilizzare un ArrayList di stringhe.
Supponi di avere una classe Persona che ha molti attributi incluso il nome.
class person
{
public String name;
public int age;
public int weight;
public String hair_colour;
public String eye_colour;
};
Hai un ArrayList di persone e vuoi trovare una persona in questo ArrayList e hai solo il loro nome.
ArrayList<person> people = new ArrayList<person>();
Come trovo "Fred"?
So che è possibile eseguire il ciclo sebbene tutti gli elementi nell'elenco, ma voglio farlo correttamente con un iteratore.
Qualcuno sa di un tutorial per spiegare come fare una ricerca su un ArrayList utilizzando un Iterator per trovare un elemento utilizzando un solo attributo di quell'elemento?
O semplicemente non è possibile? Ho frainteso quello di Iterator?
Risposte
Come sottolineato nei commenti, l'approccio iteratore è molto simile a quello che fai con i cicli standard:
public static Person findPersonByName(List<Person> list, String name) {
Iterator<Person> it = list.iterator();
while (it.hasNext()) {
Person p = it.next();
if (p.getName().equals(name)) { // Person found, return object
return p;
}
}
return null; // Not found return NULL
}
Se stai usando Java 8 e versioni successive, forse puoi provare stream (), lo rendono molto compatto:
public static Person findPersonByName(List<Person> list, String name) {
return list.stream().filter(p -> name.equals(p.getName())).findFirst().orElse(null);
}