如果您使用的是Eclipse Collections(以前称为 GS Collections),则可以partition
在所有RichIterables
.
MutableList<Integer> integers = FastList.newListWith(-3, -2, -1, 0, 1, 2, 3);
PartitionMutableList<Integer> result = integers.partition(IntegerPredicates.isEven());
Assert.assertEquals(FastList.newListWith(-2, 0, 2), result.getSelected());
Assert.assertEquals(FastList.newListWith(-3, -1, 1, 3), result.getRejected());
使用自定义类型 ,PartitionMutableList
而不是的原因Pair
是允许 getSelected() 和 getRejected() 的协变返回类型。例如,对 a 进行分区MutableCollection
会给出两个集合而不是列表。
MutableCollection<Integer> integers = ...;
PartitionMutableCollection<Integer> result = integers.partition(IntegerPredicates.isEven());
MutableCollection<Integer> selected = result.getSelected();
如果您的集合不是RichIterable
,您仍然可以使用 Eclipse Collections 中的静态实用程序。
PartitionIterable<Integer> partitionIterable = Iterate.partition(integers, IntegerPredicates.isEven());
PartitionMutableList<Integer> partitionList = ListIterate.partition(integers, IntegerPredicates.isEven());
注意:我是 Eclipse Collections 的提交者。