如何解决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上进行查找,以仅使用该项目的一个属性来查找该项目?
还是这不可能?我是否误解了迭代器?
解决方法
正如评论中指出的那样,迭代器方法与您对标准循环所做的非常相似:
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);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。