java - 使用 stream() 在特定条件下将 Set<String> 转换为 List<Set<String>>

标签 java list set java-stream hashset

我有一个集合,假设有 10 个独特的元素

Set<String> myset =new HashSet<String>();

[a,b,c,d,e,f,g,h,i,j]

我想构建一个 List<Set<String>>这样列表中的每个元素都包含一组大小为 2 的元素。

List<Set<String>> myList = new ArrayList<Set<String>>();

[
[a,b],
[c,d],
[e,f],
[g,h],
[i,j]
]

如何使用 stream 实现它在 Java 中?

最佳答案

您可以像这样将 groupingByAtomicInteger 一起使用:

AtomicInteger ai = new AtomicInteger();
List<Set<String>> myList = new ArrayList<>(
        myset.stream()
                .collect(Collectors.groupingBy(
                        s -> ai.getAndIncrement() / 2, 
                        Collectors.toSet()))
                .values());

注意:我使用了 new ArrayList,因为 values() 返回 Collection 而不是您期望的 List。另外,如果您想要其他尺寸,您只能更改 2 个。

回复:

[[a, b], [c, d], [e, f], [g, h], [i, j]]

关于java - 使用 stream() 在特定条件下将 Set<String> 转换为 List<Set<String>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67518858/

相关文章:

java - 使用抽象类中的重写方法 (Java)

java - 将 Epoch 转换为日期和时间 - HADOOP

python - 在列表中查找-1s、1s 和 0s 的多数票 - python

ios - 哪个对象的数组具有最多的特定对象

java - 如何实现维护插入顺序的并发 Set

java - 二维数组,如何以编程方式添加新的数组元素? java

java - 处理朴素贝叶斯分类器中缺失的属性

list - 检查内部列表是否在Flutter中包含一些字符串值

list - 如何在 Julia 中存储循环结果

javascript - 使用开发者 API 获取 Soundcloud 'liked' 播放列表