假设我们要在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写一个问题吗?
答案 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);