Java8: 将 Map<String,List<String>> 转换为 Map<String,String> 并通过合并值来实现

4

我有一个 Map<String, List<String>>,我想将其转换为一个 Map<String, String>,结果的值将是第一个Map的值的String.join(" - ", values)

我知道可以这样做:

public Map<String,String> flatten( Map<String, List<String>> attributes) {
      Map<String, String> map = new HashMap<>();
      attributes.forEach((k,v) -> map.put( k, String.join(" - ", v)));
      return map;
}

但是我希望摆脱new HashMap<>(),直接在输入上进行转换。
我怀疑使用collect(Collectors.groupingBy( something ) ),但我想不出如何实现。
我想要的效果如下:

public Map<String,String> flatten( Map<String, List<String>> attributes) {
    return attributes.entrySet().stream().<something>;
}

我该如何做到这一点?
1个回答

5
不需要进行分组操作。只需将条目收集到新的Map中即可:
Map<String, String> map = 
    attributes.entrySet()
              .stream()
              .collect(Collectors.toMap(Map.Entry::getKey,
                                        e-> String.join(" - ", e.getValue())));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接