Java обнаруживает элемент в ArrayList классов с итератором [дубликат]
Я не могу найти учебник по этому поводу, кажется, каждый учебник использует ArrayList строк.
Предположим, у вас есть класс Person, у которого есть много атрибутов, включая имя.
class person
{
public String name;
public int age;
public int weight;
public String hair_colour;
public String eye_colour;
};
У вас есть ArrayList людей, и вы хотите найти одного человека в этом ArrayList, и у вас есть только его имя.
ArrayList<person> people = new ArrayList<person>();
Как мне найти «Фреда»?
Я знаю, что можно зациклить все элементы в списке, но я хочу сделать это правильно с помощью Iterator.
Кто-нибудь знает учебник, объясняющий, как выполнить поиск в ArrayList с помощью Iterator, чтобы найти элемент, используя только один атрибут этого элемента?
Или это просто невозможно? Я неправильно понял Итератор?
Ответы
Как указано в комментариях, подход итератора очень похож на то, что вы делаете со стандартными циклами:
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
}
Если вы используете Java 8 и выше, возможно, вы можете попробовать streams (), они делают это очень компактным:
public static Person findPersonByName(List<Person> list, String name) {
return list.stream().filter(p -> name.equals(p.getName())).findFirst().orElse(null);
}