[英]How to combine all predicates from List<Predicate<MyClass>>
我有一个问题,我相信你帮我解决了皱纹问题。
我有
List<Predicate<TaskFx>> predicates
我想在这里使用这些谓词
taskFxList.stream().filter(predicates).collect(Collectors.toList());
作为一个谓词合并如下:
predicate1.and(predicate2).and...
我有一个表(13列),其中包含一些结果(在JavaFx中)和6个字段,可以通过这些字段中的值在此表中搜索。 我只能输入3个字段的值,所以我的
predicates.size() = 3;
问题是如何最好地动态准备一个
Predicate<TaskFx> predicate
包含由x.and(y)。和(z)合并的所有谓词
非常感谢您的帮助!
您可以像这样流式传输和reduce
它们:
Predicate<TaskFx> predicate = predicates.stream()
.reduce(x -> true, Predicate::and);
或者你可以像这样处理它们:
List<TaskFx> resultSet = stringList.stream()
.filter(e -> predicates.stream().allMatch(x -> x.test(e)))
.collect(Collectors.toList());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.