我想弄清楚如何在 Java Lambda 中对单个过滤器执行多个谓词,但运气不佳。
我有一个字符串列表
List<String> namesList = new ArrayList(){};
namesList.add("John");
namesList.add("Jane");
namesList.add("Smith");
namesList.add("Roger");
我在伪逻辑中有两个 if 语句,我想测试但不确定如何使用 lambda 进行测试(我可以使用老派方法但尝试在这里学习)。
if nameslist contains John and Roger
print "John & Roger"
if nameslist contains Jane and Smith
print "Jane Smith"
如何使用 Java lambda 测试列表中的两种情况?
最佳答案
我会这样做:
if (namesList.stream()
.filter(x -> (x.equals("John") || x.equals(("Roger"))))
.collect(Collectors.toSet())
.size() == 2) {
System.out.print("John & Roger");
}
if (namesList.stream()
.filter(x -> (x.equals("Jane") || x.equals(("Smith"))))
.collect(Collectors.toSet())
.size() == 2) {
System.out.print("Hane Smith");
}
关于java - 如何查找列表是否包含多个谓词 Java Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34834570/