带有Iterator的类的ArrayList中的Java查找项



我找不到这方面的教程,每个教程似乎都使用字符串的ArrayList。

假设您有一个类Person,它有许多属性,包括name。

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>();

我如何找到";弗雷德;?

我知道循环列表中的所有项目是可能的,但我想用迭代器正确地做到这一点。

有人知道一个教程,解释如何使用迭代器在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);
}

最新更新