我有一套,我想把它分成更小的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转换为列表,然后返回到集合。
答案 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);
}
对于所有意图和目的,结果是随机的。未定义输入集的哪些元素进入哪组输出,并且在输出集中,这些值将按任意顺序排列。