Sha*_*wal 1 lambda java-8 java-stream
我想使用 java 8 将给定的二维数组转换为映射。输入 - { { 1, 0 }, { 2, 0 }, { 3, 1 }, { 3, 2 } } 输出的形式应为 Map<Integer,列表>映射=新的HashMap<>(); 输出 - {1=[0], 2=[0], 3=[1, 2]}
下面是我的解决方案
for (int[] prereq : prerequisites) {
map.computeIfAbsent(prereq[0], k -> new ArrayList<>()).add(prereq[1]);
}
Run Code Online (Sandbox Code Playgroud)
任何更好的方法,如果 for 循环可以用流代替。
通过 key 使用来收集到包含多个值的 Map 中Collectors.groupingBy
。
int[][] prerequisites = {{1, 0}, {2, 0}, {3, 1}, {3, 2}};
Map<Integer, List<Integer>> res = Arrays.stream(prerequisites).collect(
Collectors.groupingBy(x -> x[0], Collectors.mapping(x -> x[1], Collectors.toList())));
Run Code Online (Sandbox Code Playgroud)
输出:
{1=[0], 2=[0], 3=[1, 2]}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3254 次 |
最近记录: |