我有一个Map<String, List<String>>
,我想将其转换为Map<String, String>
,结果的值将是第一个地图值的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>;
}
我该怎么做?
答案 0 :(得分:5)
无需分组。只需将条目收集到新的Map
:
Map<String, String> map =
attributes.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey,
e-> String.join(" - ", e.getValue())));