在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));
}