我有一个Map< String,List< String>>我想转换为Map< String,String>,结果的值将是第一个地图值的String.join(“ – ”,值).
我知道如何这样做:
public Map flatten( Map> attributes) {
Map map = new HashMap<>();
attributes.forEach((k,v) -> map.put( k, String.join(" - ", v)));
return map;
}
但我想摆脱新的HashMap<>()并直接对输入进行转换.
我怀疑收集(Collectors.groupingBy(某事)),但我无法弄清楚如何.
我想要的是这样的:
public Map flatten( Map> attributes) {
return attributes.entrySet().stream().;
}
我该怎么办?
解决方法:
不需要分组.只需将条目收集到新地图中:
Map map =
attributes.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey,
e-> String.join(" - ", e.getValue())));
标签:java,java-stream
来源: https://codeday.me/bug/20190608/1197433.html