List資料去重複幾種做法整理
阿新 • • 發佈:2019-01-09
List中資料去重複,可以有以下幾種做法。主要利用:1、list有序,可以遍歷判斷重複。2、set不能插入重複資料 @Test public void testDeleteListRepeat1(){ // 需要去重的集合 List<Integer> listOld = new ArrayList<>(); listOld.add(111); listOld.add(222); listOld.add(111); listOld.add(222); // 形成的新集合 List<Integer> listNew = newArrayList<>(); //直接判斷新list中是否有重複的資料(可以保證新list的順序和原list去重後一樣) for (Integer listIndex : listOld) { if (!listNew.contains(listIndex)) { listNew.add(listIndex); } } Iterator iterator = listNew.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } }
@Test public void testDeleteListRepeat2(){ // 需要去重的集合 List<Integer> listOld = new ArrayList<>(); listOld.add(111); listOld.add(222); listOld.add(111); listOld.add(222); List<Integer> listNew = new ArrayList<>();// 新建的set(作轉換用) Set setTransfer = new HashSet(); //利用set不能插入重複資料,將重複資料幹掉(注意:原list到新list資料的順序不能保證) setTransfer.addAll(listOld); listNew.addAll(setTransfer); Iterator iterator = listNew.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } }
@Test public void testDeleteListRepeat3(){ // 需要去重的集合 List<Integer> listOld = new ArrayList<>(); listOld.add(111); listOld.add(222); listOld.add(111); listOld.add(222); List<Integer> listNew = new ArrayList<>(); // 新建的set(作轉換用) Set setTransfer = new HashSet(); //利用set插入重複資料返回false 阻止新list重複 for (Integer listIndex : listOld) { if (setTransfer.add(listIndex)) { listNew.add(listIndex); } } //遍歷輸出去重複後的list Iterator iterator = listNew.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } }
@Test public void testDeleteListRepeat4(){ // 需要去重的集合 List<Integer> listOld = new ArrayList<>(); listOld.add(111); listOld.add(222); listOld.add(111); listOld.add(222); //這種寫法和 testDeleteListRepeat2 一樣 List<Integer> listNew = new ArrayList<>(new HashSet<>(listOld)); //遍歷輸出去重複後的list Iterator iterator = listNew.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } }
執行的測試結果如下: 111 222 Process finished with exit code 0