Map<String,List<String>> 替换为Map<String,Java>
原数据结构如下:
Map<String,String> map=new LinkedMultiValueMap<>();
map.add("java","1.7");
map.add("java","1.8");
添加数据后map为:<String,List<String>>结构 相同key值 使用list收集value
现在想通过stream流操作,将:
Map<String,List<String>> map ---> Map<String,Java> map
Java结构如下:
public class Java{
private List<String> versions;
}
谢邀
根据题主的描述,我感觉其实就是一个把
map
转化为map
的过程,可以看到变化的只是有value
而已,key
没有变化,这里map
也提供了一种变相来把map
中数据转化为stream
的方式,并没有直接map.stream()
的方法以前
map
循环是用到map
的entrySet
,而这里的entrySet
就是一个集合,也就可以用stream
了此时流
map.entrySet().stream()
里的数据是Map.Entry<String,List<String>>
,现在其实就是要把Map.Entry<String,List<String>>
转化为Map<String,Java>
,由于最后是要的结果是用map
收集,所以只能collect(Collectors.toMap())
了Collectors.toMap
的两个参数的方法,第一个参数代表如何获取key
,第二个代表如何获取value
,因为key
没有变,所以直接取entry
的key,value
的话要转化为Java
对象,所以写了一个构造函数(简单的构造方法我就用lombok
注解了)差不多就是这样吧,仅供参考^_^