当前位置: 代码迷 >> Java Web开发 >> 对List<Bean>模式的数据进行转换,对元素相同的属性进行归并处理,生成Map<K,V>格式
  详细解决方案

对List<Bean>模式的数据进行转换,对元素相同的属性进行归并处理,生成Map<K,V>格式

热度:878   发布时间:2016-04-16 22:09:23.0
对List<Bean>形式的数据进行转换,对元素相同的属性进行归并处理,生成Map<K,V>格式
各位大师,现在有个问题比较纠结,所以发到这里希望有哪位大神能提供给个解决思路,不甚感激! 

言归正转,通过后端逻辑处理获得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中。
------解决方案--------------------
引用:
你好,非常感谢的你的解答。
关键是map.put的时候重复键值的会覆盖value,无法进行字符串操作啊?

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);

  相关解决方案