对List<Bean>形式的数据进行转换,对元素相同的属性进行归并处理,生成Map<K,V>格式 mapjava数据bean合并 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 java 1.8 的新特性 stream 与 lambda 中 有关于分类汇总的。(groupingBy 和 我不知道了) 现在是jdk6的环境,我在想能不能通过其他方式转换? 那你再逻辑处理一下再封装到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); //创建连接 Connection conn = ConnTools.makeConnection(); //创建SQL执行工具 QueryRunner qRunner = new QueryRunner(); //执行SQL查询,并获取结果 List<SendUser> list = new ArrayList<SendUser>(); try { String sql="select " + " t1.uid" + ",t1.username" + ",t1.phs_number" + ",t2.people_id" + ",t2.people_name as destSendUserName" + ",t2.people_mobile" + ",t2.people_birth" + " from gh_send_user t1 " + " left join gh_people t2 " + " on t1.people_company_id = t2.people_company_id" + " where t1.user_type=2 " + " and t1.status=1" + " and substring(replace(t2.people_birth,'-',''),5)=date_format(date_add(now(),interval 1 day),'%m%d')"; list = (List<SendUser>) qRunner.query(conn, sql, new BeanListHandler(SendUser.class)); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } Map<String,String> map1 = new IdentityHashMap<String,String>(); //初步处理 for(SendUser su:list) { //此处加判断逻辑? } 本身想通过IdentityHashMap进行重复key的put操作,但是想了想还是没法合并 想到了,通过mysql函数group_concat进行解决select username,group_concat(destSendUserName) from aa group by username; 楼主不就需要 username destSendUserNameAllaaa a1,a2,a3,a4,a5这种形式吗?直接将list的数据遍历就是了。把相同key值的username对应的value拼接起来,用的时候split一下就可以了。IdentityHashMap 第一次认识,此类不是 通用 Map 实现!此类实现 Map 接口时,它有意违反 Map 的常规协定,该协定在比较对象时强制使用 equals 方法。此类设计仅用于其中需要引用相等性语义的罕见情况。 直接使用普通的HashMap 实现就可以了,非要用IdentityHashMap ,感觉这里也会把IdentityHashMap 用为HashMap IdentityHashMap 第一次认识,此类不是 通用 Map 实现!此类实现 Map 接口时,它有意违反 Map 的常规协定,该协定在比较对象时强制使用 equals 方法。此类设计仅用于其中需要引用相等性语义的罕见情况。 直接使用普通的HashMap 实现就可以了,非要用IdentityHashMap ,感觉这里也会把IdentityHashMap 用为HashMap恩 请看我粘贴的代码 就是在便利list的时候无法根据username进行分组,进行map.put操作,所以只能通过mysql上的group_concat函数实现了 恩 给你回帖的时候顺便翻开API去查看 IdentityHashMap 这个类了,回复完的时候发现你已经有结果了,哈哈问题解决了就可以了 关于文件选择的对话框 TOMCAT6访问页面问题 Tomcat配置Servlet出错!! 那位大哥有Servlet API中文文档! jsp+struts+mysql 做成象google搜索栏一样的效果 如何设计开发纯英文的应用系统 关于tomcat问题 请教:如何将SQLSERVER数据库中所有表结构导出??? 菜鸟求救:用jswdk作web服务器,应该把javabean放到哪里? 如何才能在jsp中应用已写好的javabean??高手们,请帮帮忙把!!! jsp循环显示图片的问题 今天碰到一个奇怪的问题,关于个别字乱码
现在是jdk6的环境,我在想能不能通过其他方式转换?
每次遍历到username时,先根据当前username去map中取value:
如果取到,将当前username对应的destSendUserNameAll添加在value后面;
如果没有取到,那就将username 和 destSendUserNameAll put进map中。
你好,非常感谢的你的解答。
关键是map.put的时候重复键值的会覆盖value,无法进行字符串操作啊?
map.put("username", "destSendUserNameAll1");
String destSendUserNameAll = map.get("username");
destSendUserNameAll = destSendUserNameAll + ",destSendUserNameAll2";
map.put("username", destSendUserNameAll);
//创建连接
Connection conn = ConnTools.makeConnection();
//创建SQL执行工具
QueryRunner qRunner = new QueryRunner();
//执行SQL查询,并获取结果
List<SendUser> list = new ArrayList<SendUser>();
try {
String sql="select "
+ " t1.uid"
+ ",t1.username"
+ ",t1.phs_number"
+ ",t2.people_id"
+ ",t2.people_name as destSendUserName"
+ ",t2.people_mobile"
+ ",t2.people_birth"
+ " from gh_send_user t1 "
+ " left join gh_people t2 "
+ " on t1.people_company_id = t2.people_company_id"
+ " where t1.user_type=2 "
+ " and t1.status=1"
+ " and substring(replace(t2.people_birth,'-',''),5)=date_format(date_add(now(),interval 1 day),'%m%d')";
list = (List<SendUser>) qRunner.query(conn, sql, new BeanListHandler(SendUser.class));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Map<String,String> map1 = new IdentityHashMap<String,String>();
//初步处理
for(SendUser su:list)
{
//此处加判断逻辑?
}
select username,group_concat(destSendUserName) from aa group by username;
username destSendUserNameAll
aaa a1,a2,a3,a4,a5
这种形式吗?直接将list的数据遍历就是了。
把相同key值的username对应的value拼接起来,用的时候split一下就可以了。IdentityHashMap 第一次认识,此类不是 通用 Map 实现!此类实现 Map 接口时,它有意违反 Map 的常规协定,
该协定在比较对象时强制使用 equals 方法。此类设计仅用于其中需要引用相等性语义的罕见情况。 直接使用普通的HashMap 实现就可以了,非要用IdentityHashMap ,感觉这里也会把IdentityHashMap 用为HashMap
该协定在比较对象时强制使用 equals 方法。此类设计仅用于其中需要引用相等性语义的罕见情况。 直接使用普通的HashMap 实现就可以了,非要用IdentityHashMap ,感觉这里也会把IdentityHashMap 用为HashMap
恩 请看我粘贴的代码 就是在便利list的时候无法根据username进行分组,进行map.put操作,所以只能通过mysql上的group_concat函数实现了
问题解决了就可以了