List数据去重复几种做法整理

来源:互联网 发布:美容美发网站源码 编辑:程序博客网 时间:2024/06/15 19:03
List中数据去重复,可以有以下几种做法。主要利用:1、list有序,可以遍历判断重复。2、set不能插入重复数据@Testpublic 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());    }}
@Testpublic 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());    }}

@Testpublic 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());    }}

@Testpublic 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());    }}
运行的测试结果如下:111222Process finished with exit code 0
原创粉丝点击