我试图弄清楚如何在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");
}