Élément de recherche Java dans ArrayList of classes with an Iterator [duplicate]
Je ne trouve pas de tutoriel à ce sujet, chaque tutoriel semble utiliser une ArrayList de chaînes.
Supposons que vous ayez une classe Person qui possède de nombreux attributs, dont le nom.
class person
{
public String name;
public int age;
public int weight;
public String hair_colour;
public String eye_colour;
};
Vous avez une ArrayList de personnes et vous voulez trouver une personne dans cette ArrayList et vous n'avez que son nom.
ArrayList<person> people = new ArrayList<person>();
Comment trouver "Fred"?
Je sais qu'il est possible de parcourir tous les éléments de la liste, mais je veux le faire correctement avec un itérateur.
Quelqu'un connaît-il un didacticiel pour expliquer comment effectuer une recherche sur une ArrayList à l'aide d'un itérateur pour trouver un élément en utilisant un seul attribut de cet élément?
Ou n'est-ce pas possible? Ai-je mal compris Iterator?
Réponses
Comme indiqué dans les commentaires, l'approche itératrice est très similaire à ce que vous faites avec les boucles 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
}
Si vous utilisez Java 8 et supérieur, vous pouvez peut-être essayer streams (), ils le rendent très compact:
public static Person findPersonByName(List<Person> list, String name) {
return list.stream().filter(p -> name.equals(p.getName())).findFirst().orElse(null);
}