ent*_*spa 1 java arrays set java-8 java-stream
可能将Java int []数组的副本复制到HashSet <Integer>但很难回答这么新的问题.
我有一套我想宣布的:
int[] flattened = Arrays.stream(arcs).flatMapToInt(Arrays::stream).toArray();
Set<Integer> set = new HashSet<Integer>(Arrays.asList(flattened));
Run Code Online (Sandbox Code Playgroud)
但由于返回类型Arrays.asList是一个列表本身,它无法解决.什么是将列表int[]转换为最佳方法Set<Integer>
..将int []列表转换为Set的最佳方法是什么
在这种情况下,您可以使用:
List<int[]> arcs = ...;
Set<Integer> set = arcs.stream()
.flatMapToInt(Arrays::stream)
.boxed()
.collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)
示例:
List<int[]> arcs = new ArrayList<>(Arrays.asList(new int[]{1, 2, 3}, new int[]{3, 4, 6}));
Run Code Online (Sandbox Code Playgroud)
输出
[1, 2, 3, 4, 6]
Run Code Online (Sandbox Code Playgroud)
注意:正如杰克所说,为了保证收藏,HashSet你可以像这样收集:
...
.collect(Collectors.toCollection(() -> new HashSet<>()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
482 次 |
| 最近记录: |