Elemento de búsqueda de Java en ArrayList de clases con un iterador [duplicado]
No puedo encontrar un tutorial de esto, cada tutorial parece usar una ArrayList de cadenas.
Suponga que tiene una clase Person que tiene muchos atributos, incluido el nombre.
class person
{
public String name;
public int age;
public int weight;
public String hair_colour;
public String eye_colour;
};
Tiene una ArrayList de personas y desea encontrar una persona en esta ArrayList y solo tiene su nombre.
ArrayList<person> people = new ArrayList<person>();
¿Cómo encuentro a "Fred"?
Sé que es posible recorrer todos los elementos de la lista, pero quiero hacerlo correctamente con un iterador.
¿Alguien sabe de un tutorial para explicar cómo hacer una búsqueda en una ArrayList usando un Iterador para encontrar un elemento usando solo un atributo de ese elemento?
¿O esto simplemente no es posible? ¿He entendido mal los iteradores?
Respuestas
Como se señaló en los comentarios, el enfoque del iterador es muy similar a lo que hace con los bucles estándar:
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 está utilizando Java 8 y superior, tal vez pueda probar streams (), lo hacen muy compacto:
public static Person findPersonByName(List<Person> list, String name) {
return list.stream().filter(p -> name.equals(p.getName())).findFirst().orElse(null);
}