在java中使用streams查找列表中的项目

在java中使用streams查找列表中的项目,java,java-8,java-stream,Java,Java 8,Java Stream,我有一份名单。每个人都有名字和年龄 我想使用流来查找此人是否已在列表中 public void process (Person pItem) { Person curPerson = persons.stream().filter(x -> x.name.equals(pItem.name)).collect(.. ???) } 你可以用 如果您还想检查年龄是否相同?如果person只包含姓名和年龄,并且您定义了等号,您可以执行persons.stream().anyMatch(

我有一份名单。每个人都有名字和年龄

我想使用流来查找此人是否已在列表中

public void process (Person pItem) {
    Person curPerson = persons.stream().filter(x -> x.name.equals(pItem.name)).collect(.. ???)
}
你可以用


如果您还想检查年龄是否相同?如果person只包含姓名和年龄,并且您定义了等号,您可以执行
persons.stream().anyMatch(person::equals)
否则,您可以执行
persons.stream().anyMatch(x->x.name.equals(pItem.name)和&x.age.equals(pItem.age))
如果你用这个方法找不到匹配项,你怎么能检查…就像在.net中如果结果是空的我想这是我需要的,但是如果我想检查姓名和年龄呢?你可以添加年龄:Person-curPerson=persons.stream().filter(x->x.name.equals(pItem.name)和&x.age.equals(pItem.age)).findFirst().get();不要在此处使用
.get()
,除非您确定此人已在列表中。否则它将抛出一个
NoSuchElementException
Ik确实存在此异常……如何解决此问题?@Pavlo Plynko:
orElse(“未找到”)
不起作用,除非您继续使用公共基类型
Person
String
。如果要将结果分配给
Person
类型的变量,则只能使用
orElse(null)
或使用表示未知或缺席人员的伪Person实例。
Person curPerson= persons.stream().filter(x -> x.name.equals(pItem.name)).findFirst().orElse(null);
public boolean process (Person pItem) {
    return persons.stream().anyMatch(x -> x.name.equals(pItem.name));
}