Java List对象合并去重数据

最近有批数据需要处理 数据格式为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]]

猜你喜欢

转载自blog.csdn.net/qq_34735535/article/details/79923004