1. 程式人生 > >Java List物件合併去重資料

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]]