1. 程式人生 > >List資料去重複幾種做法整理

List資料去重複幾種做法整理

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 = new 
ArrayList<>(); //直接判斷新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