怎么使用java8的stream合并HashMap的所有value为一个List,value的类型为Stackmap = new HashMap<String, Stack<String>>;
要求把map的value合并成List<String>
,并使用java8的stream方法操作
Stack是java自带的容器,在这里完全可以看成是ArrayList
怎么使用java8的stream合并HashMap的所有value为一个List,value的类型为Stackmap = new HashMap<String, Stack<String>>;
要求把map的value合并成List<String>
,并使用java8的stream方法操作
Stack是java自带的容器,在这里完全可以看成是ArrayList
[{
"name1":"test1",
"age1":"90"
},{
"name2":"test2",
"age2":"23"
},{
"name3":"test3",
"age3":"79"
}]
请问下有一个这样的JSON或MAP,如何转换成:
List<User> userList = new ArrayList();
user.name = ...
user.age = ...
15 回答11.5k 阅读✓ 已解决
6 回答2.3k 阅读
10 回答4.2k 阅读
8 回答2.9k 阅读✓ 已解决
9 回答1.7k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
7 回答1.5k 阅读
在写
stream
的时候,一定要心里非常清楚当前stream
中到底是什么元素,这样你才能结合map
,filter
,peek
等方法来转化你的数据首先开始的时候还没有
stream
,数据源是一个map
,把map
转化为stream
,我还是建议使用entryset
的方式题主是想要
Entry
里面的value
,也就是Stack<String>
,那就要把Map.Entry<String, Stack<String>>
转化为Stack<String>
,那这里肯定要用map
操作啦拿到了
Stack<String>
的stream
还不够,看题主的意思,是想取出Stack
中的一个String
的属性或者一个计算出来的值,那就是要把Stack
转化为String
,根据题主的信息,这个Stack
其实就是java.util.Stack
,那这个也相当于是一个集合了,集合都会有都可以变成stream
的,由于需要集合里的string
对象,那就相当于要把这个Stack
集合压平,压平的话,那就肯定要用flatmap
啦这样就完整啦,当然
map
中我用的是方法引用,觉得这么写更直观一点,可以看得到当前stream
里到底是啥类型元素,你也可以写成lamdba
的形式啦