Java 8-使用许多过滤器的过滤器集合 [英] Java 8 - filter collection using many filters
本文介绍了Java 8-使用许多过滤器的过滤器集合的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想使用多个过滤器过滤掉我的收藏集.
I would like to filter out my collection using multiple filters.
假设我有一个字符串列表和一个函数filter()
来过滤出空字符串.
Let's assume I have a list of Strings and a function filter()
to filter out empty Strings.
List<String> myList = .......
通常,我会使用这样的流:
Typically, I would use streams like this:
myList.stream()
.filter(elem -> filterOut(elem))
.collect(Collectors.toList());
如何使用流应用集合(List
或Set
)中的多个过滤器?
How to apply multiple filters from a collection (List
or Set
) using streams?
Set<Predicate> myFilters = .....
推荐答案
myList.stream()
.filter(s -> myFilters.stream().allMatch(p -> p.test(s)))
.collect(Collectors.toList());
或者,如果您是番石榴的粉丝:
Or if you're a fan of Guava:
com.google.common.base.Predicate<String> combined = Predicates.and(Iterables.transform(myFilters, p -> p::test));
myList.stream()
.filter(combined::apply)
.collect(Collectors.toList());
这篇关于Java 8-使用许多过滤器的过滤器集合的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文