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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章