List某字段相同时将其他字段数据相加
Posted zhouerba
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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某字段相同时将其他字段数据相加的主要内容,如果未能解决你的问题,请参考以下文章
多个相同的对象存储在List集合,根据对象内的某一个属性去重并且实现其中一个字段相加
多个相同的对象存储在List集合,根据对象内的某一个属性去重并且实现其中一个字段相加