我想使用多个过滤器过滤掉我的收藏。
假设我有一个字符串列表和一个函数filter()
来过滤掉空字符串。
List<String> myList = .......
通常,我会使用这样的流:
myList.stream()
.filter(elem -> filterOut(elem))
.collect(Collectors.toList());
如何使用流应用集合中的多个过滤器(List
或Set
)?
Set<Predicate> myFilters = .....
答案 0 :(得分:3)
<a href="javascript:void(0);" class="ic menu">
<span class="line"></span>
<span class="line"></span>
<span class="line"></span>
</a>
<a href="javascript:void(0);" class="ic close"></a>
或者如果你是番石榴的粉丝:
myList.stream()
.filter(s -> myFilters.stream().allMatch(p -> p.test(s)))
.collect(Collectors.toList());
答案 1 :(得分:2)
Predicate combinedPredicate = myFilters.stream().reduce(Predicate::or).orElse(t -> false);