将一组划分为较小的集合 - Java

时间:2015-09-25 22:22:24

标签: java set guava

我有一套,我想把它分成更小的x组。番石榴有类似的列表 - Lists.partition。但我找不到任何与套装有关的东西。是否有任何图书馆可以帮助我这样做?如果没有,那么将一个集合分成更小的集合的最佳方法是什么?

编辑:目前,我的工作如下:

int x = 10;
Set<String> stringSet = createHashSet();
for (List<String> partition : Iterables.partition(stringSet, x) {
    doSomething(new HashSet<>(partition));
}

我正在使用此Iterables.partition。应该有更好的方法来实现它,这不涉及将set转换为列表,然后返回到集合。

1 个答案:

答案 0 :(得分:1)

Set<Integer> input = /*defined elsewhere*/;
int x = 10;

List<Set<Integer>> output = new ArrayList<>();
Set<Integer> currSet = null;
for (Integer value : input) {
    if (currSet == null || currSet.size() == x)
        output.add(currSet = new HashSet<>());
    currSet.add(value);
}

对于所有意图和目的,结果是随机的。未定义输入集的哪些元素进入哪组输出,并且在输出集中,这些值将按任意顺序排列。