首页 > 代码库 > List某字段相同时将其他字段数据相加
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);//两个list合并,此时数据还没有相加,只是在后面追加另一个list 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()); 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()函数结束 }
List某字段相同时将其他字段数据相加
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。