• List某字段相同时将其他字段数据相加


    eg:List<User>中,User有id和money两个字段,如果id相同,就把User合并,即将money相加。

    (代码中前段内容是两个list的追加,list1后面追加list2,最后存放在list1中)

    数据:1:10;2:20;1:40

    输出:1:50;2:20

    User.java

    package list;
    
    public class User {
        private String id;
        private int money;
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public int getMoney() {
            return money;
        }
        public void setMoney(int money) {
            this.money = money;
        }
    
    }

    test.java

    package list;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import list.User;
    //list 某字段相同时合并其他字段数据
    //List<User>中,User有id和money两个字段,如果id相同,就把User合并,并且将money相加。
    public class test {
        public static void main(String[] args) {
            demo();
        }
        public static void demo(){
        List<User> list1 = new ArrayList<User>();
        List<User> list2 = new ArrayList<User>();
        User user1=new User();
        user1.setId("1");
        user1.setMoney(10);
        list1.add(user1);
        
        User user2=new User();
        user2.setId("2");
        user2.setMoney(20);
        User user3=new User();
        user3.setId("1");
        user3.setMoney(40);
        list2.add(user2);
        list2.add(user3);
        
        list1.addAll(list2);
        System.out.println("合并前:");
        for (User u : list1) {
             System.out.println(u.getId());
             System.out.println(u.getMoney());
    
         }
         
        User tmpUser = null;
         Map<String, User> map = new HashMap<String, User>();//合并后的User存在map中
         for(User oUser:list1) {
              tmpUser = map.get(oUser.getId());//获取某key对应value
              if (tmpUser != null) {
                      tmpUser.setMoney(tmpUser.getMoney() + oUser.getMoney());  //money合并
              } else {
                   map.put(oUser.getId(), oUser);
             }
         }
         
         List<User> list = new ArrayList<User>();
         System.out.println("合并后:");
         for (String in : map.keySet()) {//遍历map
            //map.keySet()返回的是所有key的值
            User u = map.get(in);//得到每个key对应value的值
            list.add(u);
            System.out.println(u.getId()+":"+u.getMoney());
            }
         for (User u : list) {//新list输出
             System.out.println(u.getId());
             System.out.println(u.getMoney());
    
         }
         
        }//demo()函数结束
    
    }
  • 相关阅读:
    多线程《三》进程与线程的区别
    多线程《二》开启线程的两种方式
    多线程《一》线程理论
    多进程《七》生产者消费者模型
    多进程《六》队列
    互斥锁与join
    多进程《五》互斥锁
    多进程《四》守护进程
    再度认识未来——2.11
    开始——2.10
  • 原文地址:https://www.cnblogs.com/zhouerba/p/7356450.html
Copyright © 2020-2023  润新知