将Map <String,List <Integer >>转换为Map <String,int []>

jav*_*vaq 2 java lambda java-8

拥有如下数据地图:

Map<String, List<Integer>> dataMap = ....
Run Code Online (Sandbox Code Playgroud)

我想将它转换为另一个地图

下面,我试过的解决方案

Map<String, int[]> dataMapOut = new HashMap<>();
dataMap.entrySet().stream().forEach(entry -> {
    String key = entry.getKey();
    int[] val = entry.getValue().stream().mapToInt(i -> i).toArray();
    dataMapOut.put(key, val);
});
Run Code Online (Sandbox Code Playgroud)

寻找更好,更简洁的映射方式?

Ous*_* D. 8

你正在寻找toMap收藏家.

 Map<String, int[]> result = dataMap.entrySet()
            .stream()
            .collect(Collectors.toMap(Map.Entry::getKey,
                    e -> e.getValue()
                            .stream()
                            .mapToInt(Integer::intValue)
                            .toArray()));
Run Code Online (Sandbox Code Playgroud)