由指定物件集合分出重複物件集合和不重複物件集合
阿新 • • 發佈:2018-12-11
package com.example.demo0810.util; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; import com.example.demo0810.entity.Person; public class ObjectSort { //由指定物件集合ObjectList分出重複物件集合ListRepeat 和不重複物件集合ListNoRepeat public List<Person> ObjectListSortRepeat(List<Person> personList,String repeat){ List listId=new ArrayList<Integer>(); List listIdRepeat=new ArrayList<Integer>(); List listIdNoRepeat=new ArrayList<Integer>(); List<Person> listRepeat=new ArrayList<Person>(); List<Person> listNoRepeat=new ArrayList<Person>(); personList.forEach(p->listId.add(p.getId())); Collections.sort(listId); //獲取重複ID for (int i = 0; i < listId.size(); i++) { int idNow=(int) listId.get(i); for (int j = i+1; j < listId.size(); j++) { if(idNow==(int)listId.get(j)) { listIdRepeat.add(listId.get(j)); // System.out.print("listId:"+listId.get(j)+" "); break; } } } //獲取重複id對於的物件集合ListRepeat for(int i=0;i<listIdRepeat.size();i++) { int idNow=(int) listIdRepeat.get(i); for (Person person : personList) { if(idNow==person.getId()) { listRepeat.add(person); } } } //獲取非重複ID對於的物件集合listNoRepeat /* HashSet<Person> objectSet= new HashSet<>(); for(Iterator<Person> it=personList.iterator();it.hasNext();) { objectSet.add(it.next()); }*/ for (int i = 0; i < personList.size(); i++) { int idNow=(int) personList.get(i).getId(); boolean flag=true; for (int j = 0; j < listIdRepeat.size(); j++) { if(idNow==(int)listIdRepeat.get(j)) { flag=false; break; } } if(flag==true) { listNoRepeat.add(personList.get(i)); } } if("repeat".equals(repeat)) { return listRepeat; }else if("NoRepeat".equals(repeat)) { return listNoRepeat; }else { return null; } } public static void main(String[] args) { List<Person> personList=new ArrayList<Person>() { { add(new Person( 1,"yoko01",20,"ssss")); add(new Person( 3,"yoko02",20,"ssss")); add(new Person( 2,"yoko03",20,"ssss")); add(new Person( 1,"yoko01",20,"ssss")); add(new Person( 4,"yoko05",20,"ssss")); } }; ObjectSort os=new ObjectSort(); System.out.println("==============初始列表================"); personList.forEach(ps->System.out.println(ps)); System.out.println("==============重複列表================"); os.ObjectListSortRepeat(personList, "repeat").forEach(ps->System.out.println(ps.toString())); System.out.println("==============非重複列表================"); os.ObjectListSortRepeat(personList, "NoRepeat").forEach(ps->System.out.println(ps.toString())); } }
輸出結果: