各位大师,现在有个问题比较纠结,所以发到这里希望有哪位大神能提供给个解决思路,不甚感激!
言归正转,通过后端逻辑处理获得List<User> list ,格式如下
uid username phs_number people_id destSendUserName people_mobile people_birth
32 aaa 1111 528 a1 5555 1979/7/13
32 aaa 1111 826 a2 6666 1971/7/13
32 aaa 1111 1268 a3 7777 1980/7/13
32 aaa 1111 1290 a4 8888 1989/7/13
32 aaa 1111 1728 a5 9999 1955/7/13
4 bbb 2222 3141 b1 0 1981/7/13
30 ccc 3333 4224 c1 1112 1976/7/13
30 ccc 3333 4313 c2 1132 1977/7/13
14 ddd 4444 4578 d1 3234 1984/7/13
14 ddd 4444 4984 d2 3424 1969/7/13
现在希望对username相同的进行合并,生成类似以下的数据,准备通过Map<String,String>存储
username destSendUserNameAll
aaa a1,a2,a3,a4,a5
bbb b1
ccc c1,c2
ddd d1,d2
中间的逗号是分隔符,可以使任何字符
有哪位看到后给说明的解决思路?十分感谢
------解决方案--------------------
java 1.8 的新特性 stream 与 lambda 中 有关于分类汇总的。(groupingBy 和 我不知道了)
------解决方案--------------------
那你再逻辑处理一下再封装到MAP里面去不就可以了?
------解决方案--------------------
对list进行遍历,按照 username destSendUserNameAll 入到Map<String,String>中
每次遍历到username时,先根据当前username去map中取value:
如果取到,将当前username对应的destSendUserNameAll添加在value后面;
如果没有取到,那就将username 和 destSendUserNameAll put进map中。
------解决方案--------------------
value拼接,然后覆盖,这样不会损失之前的value了
Map<String, String> map = new HashMap<String, String>();
map.put("username", "destSendUserNameAll1");
String destSendUserNameAll = map.get("username");
destSendUserNameAll = destSendUserNameAll + ",destSendUserNameAll2";
map.put("username", destSendUserNameAll);