如何使用流过滤范围内的集合

Nei*_*eil 2 java collections lambda java-8 java-stream

我有一个人的域名

public class Person{
  String name;
}
Run Code Online (Sandbox Code Playgroud)

我有一个列表的人名字符串,如

listRange = new ListWith("Bob","John","Mark");
Run Code Online (Sandbox Code Playgroud)

我如何使用Java 8流在resultList中过滤,哪个人在此范围列表中具有名称.可能就像

resultList.stream().filter(p->p.getName().equals(listRange.any).collect();
Run Code Online (Sandbox Code Playgroud)

如何使用Lambda过滤resultList?

Tun*_*aki 8

您正在寻找的只是contains方法:

resultList.stream().filter(p -> listRange.contains(p.getName()))
                   .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

如果您的名单仅用于从结果中过滤掉人员,则应考虑使用a Set作为其contains方法是O(1)(常数时间),这样可以获得更好的性能.