[英]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.