怎么使用java8的stream合并HashMap的所有value为一个List,value的类型为Stackmap=newHashMap;要求把map的value合并成List,并使用java8的stream方法操作Stack是java自带的容器,在这里完全可以看成是ArrayList
2 回答
BIG阳
TA贡献1859条经验 获得超6个赞
在写stream的时候,一定要心里非常清楚当前stream中到底是什么元素,这样你才能结合map,filter,peek等方法来转化你的数据首先开始的时候还没有stream,数据源是一个map,把map转化为stream,我还是建议使用entryset的方式//此时stream里的元素是Map.Entry> map.entrySet().stream()题主是想要Entry里面的value,也就是Stack,那就要把Map.Entry >转化为Stack ,那这里肯定要用map操作啦 //此时stream里的元素是Stack map.entrySet().stream().map(Map.Entry::getValue)拿到了Stack的stream还不够,看题主的意思,是想取出Stack中的一个String的属性或者一个计算出来的值,那就是要把Stack转化为String,根据题主的信息,这个Stack其实就是java.util.Stack,那这个也相当于是一个集合了,集合都会有都可以变成stream的,由于需要集合里的string对象,那就相当于要把这个Stack集合压平,压平的话,那就肯定要用flatmap啦 Listcollect=map.entrySet().stream() .map(Map.Entry::getValue).flatmap(Stack::stream).collect(Collectors.toList());这样就完整啦,当然map中我用的是方法引用,觉得这么写更直观一点,可以看得到当前stream里到底是啥类型元素,你也可以写成lamdba的形式啦
守着星空守着你
TA贡献1799条经验 获得超8个赞
map.values().stream().flatMap(Collection::stream).collect(Collectors.toList())
添加回答
举报
0/150
提交
取消