List集合中数据去重方法

41 阅读1分钟

一.通过Java8的Stream流实现去重(有序)

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        //添加集合元素
        Collections.addAll(list,"E","A","B","A","C","B","A","D","C","F");

        //通过Java8的stream流实现去重
        List<String> newList = list.stream().distinct().collect(Collectors.toList());

        //输出结果
        System.out.println("--------原集合--------:"+list);
        System.out.println("通过stream流去重后的集合:"+newList);
    }

输出结果:

image.png

二.通过Set集合及其特性去重

HashSet(无序)

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        //添加集合元素
        Collections.addAll(list,"E","A","B","A","C","B","A","D","C","F");

        //通过HashSet实现去重
        //方法一:
        HashSet<String> set = new HashSet<>(list);
        //方法二:
        List<String> newList = new ArrayList<>(new HashSet<>(list));

        //输出结果
        System.out.println("------原集合------:"+list);
        System.out.println("HashSet去重后的集合:"+set);
        System.out.println("HashSet去重后的集合:"+newList);
    }

image.png

LinkedHashSet(有序)

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        //添加集合元素
        Collections.addAll(list,"E","A","B","A","C","B","A","D","C","F");

        //通过LinkedHashSet及特性实现去重
        //方法一:
        LinkedHashSet<String> set = new LinkedHashSet<>(list);
        //方法二:
        List<String> newList = new ArrayList<>(new LinkedHashSet<>(list));
        
        //输出结果
        System.out.println("---------原集合---------:"+list);
        System.out.println("LinkedHashSet去重后的集合:"+set);
        System.out.println("LinkedHashSet去重后的集合:"+newList);
    }

image.png

TreeSet(无序)

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        //添加集合元素
        Collections.addAll(list,"E","A","B","A","C","B","A","D","C","F");

        ///通过TreeSet特性实现去重
        //方法一
        TreeSet<String> set = new TreeSet<>(list);
        //方法二
        List<String> newList = new ArrayList<>(new TreeSet<>(list));

        //输出结果
        System.out.println("--------原集合--------:"+list);
        System.out.println("TreeSet去重后的集合:"+set);
        System.out.println("TreeSet去重后的集合:"+newList);
    }

输出结果:

image.png

三. 通过contains方法遍历判断去重(有序)

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        //添加集合元素
        Collections.addAll(list,"E","A","B","A","C","B","A","D","C","F");
        List<String> newList = new ArrayList<>();
        List<String> newList2 = new ArrayList<>();

        //通过contains方法遍历判断去重
        //方法一
        for(String a:list){
            if (!newList.contains(a)){
                newList.add(a);
            }
        }
        //方法二
        list.forEach(b -> {
            if (!newList2.contains(b)){
                newList2.add(b);
            }
        });

        //输出结果
        System.out.println("--------------原集合--------------:"+list);
        System.out.println("通过contains方法循环判断去重后的集合:"+newList);
        System.out.println("通过contains方法循环判断去重后的集合:"+newList2);
    }

输出结果:

image.png

四.通过remove方法去重(有序)

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        //添加集合元素
        Collections.addAll(list,"E","A","B","A","C","B","A","D","C","F");
        System.out.println("原集合:"+list);
        //通过contains方法遍历判断去重
        if (list.size() > 0){
            for (int i = 0; i < list.size() - 1; i++) {
                for (int j = list.size() - 1; j > i; j--) {
                    if (list.get(j).equals(list.get(i))) {
                        list.remove(j);
                    }
                }
            }
        }
        //输出结果
        System.out.println("新集合:"+list);
    }

输出结果:

image.png