怎么使用java8的stream合并HashMap的所有value为一个List,value的类型为Stack

怎么使用java8的stream合并HashMap的所有value为一个List,value的类型为Stackmap=newHashMap>;要求把map的value合并成List,并使用java8的stream方法操作Stack是java自带的容器,在这里完全可以看成是ArrayList
料青山看我应如是
浏览 4767回答 2
2回答

BIG阳

在写stream的时候,一定要心里非常清楚当前stream中到底是什么元素,这样你才能结合map,filter,peek等方法来转化你的数据首先开始的时候还没有stream,数据源是一个map,把map转化为stream,我还是建议使用entryset的方式//此时stream里的元素是Map.Entrymap.entrySet().stream()题主是想要Entry里面的value,也就是Stack,那就要把Map.Entry转化为Stack,那这里肯定要用map操作啦//此时stream里的元素是Stackmap.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的形式啦

守着星空守着你

map.values().stream().flatMap(Collection::stream).collect(Collectors.toList())
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript