如何在使用Collections2过滤时返回2个集合?

时间:2016-04-30 07:41:35

标签: collections filter guava

假设我们要在x[i] = new int[col]; 上应用__TIME__,以便实际满足predicateA的列表为ParentList,这是{{1}的子列表1}}。我感兴趣的还有predicateA ListA,它是不满足ParentList的剩余元素列表。

一种方法是应用Negicate of PredicateA。例如: -

ListB

是不是可以提取ListA&使用单个调用过滤函数将ListB分成两个列表?

类似:满足(ParentList - ListA)的内容填充在PredicateA中,不满足Collections2.filter(ParentList, PredicateA); -> ListA Collections2.filter(ParentList, Predicates.not(PredicateA)); -> ListB 的内容填充在PredicateA中。

询问的原因是表现。我需要再次将ListA应用于上面显示的第二个调用中的同一组元素。

这个用例是否已由Google Guava或类似的集合库解决?

目前有没有图书馆这样做?或Google Guava是否已计划这样做?这样做是件好事,所以我可以在github上为Google Guava写一个问题吗?

1 个答案:

答案 0 :(得分:2)

是。您可以使用Multimaps.index(Iterable, Function)通过某个键(在本例中为PredicateA)对值进行索引/分组/分区。然后,您可以访问每个值列表:一个用于满足谓词的元素,另一个用于那些不满足谓词的元素。

e.g:

final ImmutableListMultimap<Boolean, T> index = Multimaps.index(ParentList, PredicateA);
final ImmutableList<T> satisfiedList = index.get(true);
final ImmutableList<T> unsatisfiedList = index.get(false);