Java 8 lambda链接谓词赢得';行不通
我有一份水果清单:Java 8 lambda链接谓词赢得';行不通,java,java-8,predicate,Java,Java 8,Predicate,我有一份水果清单: final List<Fruit> fruitList = Arrays.asList(new Fruit(1, "AA"), new Fruit(2, "DD"), new Fruit(3, "CC"), new Fruit(4, "BB")); 当我将谓词与另一个谓词链接时,它将不起作用 final Predicate<Fruit> predicate = s -> s.getName().equals("AA");
final List<Fruit> fruitList = Arrays.asList(new Fruit(1, "AA"), new Fruit(2, "DD"),
new Fruit(3, "CC"), new Fruit(4, "BB"));
当我将谓词与另一个谓词链接时,它将不起作用
final Predicate<Fruit> predicate = s -> s.getName().equals("AA");
predicate.and(s -> s.getId() == 10);
System.out.println(fruitList.stream().anyMatch(predicate)); -> output true
final Predicate=s->s.getName().equals(“AA”);
谓词和(s->s.getId()==10);
System.out.println(水果列表.stream().anyMatch(谓词));->输出真值
它是如何可能的?来自谓词的:
和(谓词<?super T>其他)
返回一个组合谓词,该谓词
表示此谓词和的短路逻辑AND
另一个
结果谓词是返回的,并且未通过引用修改,因此您需要分配它,正如@zron在注释(
predicate=predicate.and(…)
)中所述。尝试predicate=predicate.and(…)
-和()
返回一个新的谓词。
System.out.println(fruitList.stream().anyMatch(predicate)); -> output false
final Predicate<Fruit> predicate = s -> s.getName().equals("AA");
predicate.and(s -> s.getId() == 10);
System.out.println(fruitList.stream().anyMatch(predicate)); -> output true