我有一个 Map<String, List<String>>
我想把它变成一个 Map<String, String>
,结果的值将是 String.join(" - ", values)
第一张 map 的值。
我知道怎么做:
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>;
}
我该怎么做?
最佳答案
无需分组。只需将条目收集到一个新的 Map
中:
Map<String, String> map =
attributes.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey,
e-> String.join(" - ", e.getValue())));
关于Java8 : Transform Map<String, List<String>> 通过连接值进入 Map<String,String>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42948235/