工作中遇到将List中某字段相同的元素合并,笔者觉得有必要记录下来,以备以后参考,好了,直接上代码
import java.util.ArrayList; import java.util.List; class A { private String name;//姓名 private int age;//年龄 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } public class Test4 { public static void main(String[] args) { List<A> oldList = new ArrayList<A>();//需要整合的List List<A> newList = new ArrayList<A>();//整合后的List A aA = new A(); aA.setName("a"); aA.setAge(10); A aB = new A(); aB.setName("b"); aB.setAge(20); A aC = new A(); aC.setName("c"); aC.setAge(30); A aD = new A(); aD.setName("b"); aD.setAge(40); oldList.add(aA); oldList.add(aB); oldList.add(aC); oldList.add(aD); for (A oldO : oldList) { boolean flag = true;//给整合后集合添加子元素标志,true:添加,false:不添加,其年龄相加 for (A newO : newList) { if (newO.getName(). equals(oldO.getName())) {//判断姓名是否相同 newO.setAge(newO.getAge()+oldO.getAge());//姓名相同时,年龄相加 flag = false; } } if (flag) { newList.add(oldO);//给整合后集合添加子元素 } } for (A a : newList) {//打印结果 System.out.println(a.getName() + " : "+a.getAge()); } } }
如有问题,请朋友们指出来!