解决方案 »

  1.   

    java 1.8 的新特性  stream 与 lambda  中 有关于分类汇总的。(groupingBy  和 我不知道了)
      

  2.   


    现在是jdk6的环境,我在想能不能通过其他方式转换?
      

  3.   

    那你再逻辑处理一下再封装到MAP里面去不就可以了?
      

  4.   

    对list进行遍历,按照 username destSendUserNameAll 入到Map<String,String>中
    每次遍历到username时,先根据当前username去map中取value:
    如果取到,将当前username对应的destSendUserNameAll添加在value后面;
    如果没有取到,那就将username 和 destSendUserNameAll put进map中。
      

  5.   


    你好,非常感谢的你的解答。
    关键是map.put的时候重复键值的会覆盖value,无法进行字符串操作啊?
      

  6.   

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

  7.   


    //创建连接 
            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)
    {
    //此处加判断逻辑?
    }
      

  8.   

    本身想通过IdentityHashMap进行重复key的put操作,但是想了想还是没法合并
      

  9.   

    想到了,通过mysql函数group_concat进行解决
    select username,group_concat(destSendUserName) from aa group by username;   
      

  10.   

    楼主不就需要 
    username destSendUserNameAll
    aaa a1,a2,a3,a4,a5
    这种形式吗?直接将list的数据遍历就是了。
    把相同key值的username对应的value拼接起来,用的时候split一下就可以了。IdentityHashMap 第一次认识,此类不是 通用 Map 实现!此类实现 Map 接口时,它有意违反 Map 的常规协定,
    该协定在比较对象时强制使用 equals 方法。此类设计仅用于其中需要引用相等性语义的罕见情况。 直接使用普通的HashMap 实现就可以了,非要用IdentityHashMap ,感觉这里也会把IdentityHashMap 用为HashMap
      

  11.   

    IdentityHashMap 第一次认识,此类不是 通用 Map 实现!此类实现 Map 接口时,它有意违反 Map 的常规协定,
    该协定在比较对象时强制使用 equals 方法。此类设计仅用于其中需要引用相等性语义的罕见情况。 直接使用普通的HashMap 实现就可以了,非要用IdentityHashMap ,感觉这里也会把IdentityHashMap 用为HashMap

    恩  请看我粘贴的代码 就是在便利list的时候无法根据username进行分组,进行map.put操作,所以只能通过mysql上的group_concat函数实现了
      

  12.   

    恩 给你回帖的时候顺便翻开API去查看 IdentityHashMap  这个类了,回复完的时候发现你已经有结果了,哈哈
    问题解决了就可以了