簡體   English   中英

如何組合List中的所有謂詞 <Predicate<MyClass> &gt;

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM