Java list去重
public void testList() { List<Integer> list=new ArrayList<Integer>(); list.add(1); list.add(2); list.add(4); list.add(1); list.add(2); list.add(5); list.add(1); List<Integer> listTemp= new ArrayList<Integer>(); Iterator<Integer> it=list.iterator(); while(it.hasNext()){ int a=it.next(); if(listTemp.contains(a)){ it.remove(); } else{ listTemp.add(a); } } for(Integer i:list){ System.out.println(i); } }
方法二:直接将结果赋值给另一个List
public void testList2() { List<Integer> list=new ArrayList<Integer>(); list.add(1); list.add(2); list.add(4); list.add(1); list.add(2); list.add(5); list.add(1); List<Integer> tempList= new ArrayList<Integer>(); for(Integer i:list){ if(!tempList.contains(i)){ tempList.add(i); } } for(Integer i:tempList){ System.out.println(i); } }
利用 Set 去掉 list中重复值
1.对原来list顺序不要求
public static void removeDuplicate(ArrayList arlList) { HashSet h = new HashSet(arlList); arlList.clear(); arlList.addAll(h); }
2.对原来list顺序不变
public static void removeDuplicateWithOrder (ArrayList arlList) { Set set = new HashSet(); List newList = new ArrayList(); for (Iterator iter = arlList.iterator(); iter.hasNext(); ) { Object element = iter.next(); if (set.add(element)) newList.add(element); } arlList.clear(); arlList.addAll(newList); }
这里主要用了set add API 的作用当有了重复值时,返回false