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