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

标签 java lambda java-8

有如下数据图:

Map<String, List<Integer>> dataMap = ....

我想将其转换为另一张 map

下面是我尝试过的解决方案

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);
});

正在寻找更好、更简洁的映射方式?

最佳答案

您正在寻找toMap collector .

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

关于java - 将 Map<String, List<Integer>> 转换为 Map<String, int[]>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49865425/

相关文章:

java - 在 GAE 上存储文本,非标准 unicode 字符被更改

c# - 异步 lambda 并且不能将 Task.Task.List<Object> 隐式转换为 List<Object>

c# - 添加 lambda 表达式导致在尝试编译时出现奇怪的错误

Java 8 javax.net.ssl.SSLPeerUnverifiedException : peer not authenticated, 但不是 Java 7

Java 8 流 - 在流操作中使用原始流对象

java - 生成大型列表的笛卡尔积时出现 OutOfMemoryError

java - Dropwizard - 绑定(bind)不匹配 : not a valid substitute for the bounded parameter

JAVA Guava /集合: How to use a predefined list as a predicate to sort another list by?

python - Pandas value_counts() for loop 因 lambda 而失败

json - 我想向 JSON 对象添加一个属性,并将整数数组作为 Java 中的值