我有一个集合,假设有 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 中?
最佳答案
您可以像这样将 groupingBy
与 AtomicInteger
一起使用:
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/