欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java List对象合并去重数据

程序员文章站 2024-03-01 16:31:10
...

最近有批数据需要处理 数据格式为List<bean> list=new ArrayList<bean>();里面存在大批相同的数据,现在需要去除相同的数据即相同数据只留下来一条,并且需要将相同数据中一个数值叠加。本来以为处理挺简单的,后来硬生生搞了好几个小时,先将实现过程放在下面。

1:private int id;

     private int age;

     ...省略get,set

2:


List<ImportExcelTest> list=new ArrayList<ImportExcelTest>();
		ImportExcelTest z = new ImportExcelTest();
		  z.setId(1);
		  z.setAge(1);
		  ImportExcelTest zzzz = new ImportExcelTest();
		  zzzz.setId(1);
		  zzzz.setAge(2);
		  
		  ImportExcelTest zz = new ImportExcelTest();
		  zz.setId(2);
		  zz.setAge(3);
		  ImportExcelTest zzz = new ImportExcelTest();
		  zzz.setId(2);
		  zzz.setAge(4);
		  
		  list.add(zzz);list.add(zz);list.add(zzzz);list.add(z);
		  
		  List<ImportExcelTest> list1=new ArrayList<ImportExcelTest>();
		 
	        for (int i = 0; i < list.size(); i++) {
	        	if(i==0){
	        		 ImportExcelTest z1 = new ImportExcelTest();
	        		z1.setId(list.get(i).getId());
	        		z1.setAge(list.get(i).getAge());
	        		list1.add(z1);
	        		i++;
	        	}
	        	for (int j = 0; j < list1.size(); j++) {
					if(list.get(i).getId()==list1.get(j).getId()){
						int a=list.get(i).getAge()+list1.get(j).getAge();
						list1.get(j).setAge(a);
						
					}else{
						Boolean b=false;
						for (int j1 = 0; j1 < list1.size(); j1++) {
							if(list1.get(j1).getId()==list.get(i).getId()){
								b=true;
							}
						}
						if(b==false){
							ImportExcelTest z1 = new ImportExcelTest();
							System.out.println("aaa");
							z1.setId(list.get(i).getId());
							z1.setAge(list.get(i).getAge());
							list.remove(i);
			        		list1.add(z1);
						}
						 
					}
				}
	        	
			}
	        System.out.println("list1:"+list1.toString());


控制台输出结果为:list1:[ImportExcelTest [id=2, age=7], ImportExcelTest [id=1, age=3]]