我找不到这方面的教程,每个教程似乎都使用字符串的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);
}