【发布时间】:2015-12-23 20:02:46
【问题描述】:
我有一个集合,我想将它分成大小为 x 的较小集合。 Guava 有类似的列表 - Lists.partition。但我找不到与 Sets 相关的任何内容。有没有图书馆可以帮助我做到这一点?如果不是,将一个集合分成更小的集合的最佳方法是什么?
编辑:目前,我这样做如下:
int x = 10;
Set<String> stringSet = createHashSet();
for (List<String> partition : Iterables.partition(stringSet, x) {
doSomething(new HashSet<>(partition));
}
我正在使用这个Iterables.partition。应该有更好的方法来做到这一点,它不涉及将集合转换为列表,然后再转换回集合。
【问题讨论】:
-
你的分区逻辑是什么?
-
Set根据定义是无序的,因此 Guava 中存在的List的分区逻辑将不适用。您需要为此自己创建一些东西,具体取决于Set实现类(hash、tree等) -
@SotiriosDelimanolis - 我不需要任何特殊的分区逻辑。
-
@Kon - 我有一个 HashSet。我只是想把它分成更小的集合并分批处理。