四种List去重复的方法分享

public class DeReapted {

    public static void main(String[] args) {
        List<String> as = new ArrayList<>();
        as.add("a");
        as.add("e");
        as.add("f");
        as.add("a");
        as.add("d");
        as.add("f");
        System.out.println("原始数组:"+as);

        //1.将list转换成set;
        List<String> res1 = new ArrayList<>();
        Set<String> set1 = new HashSet<>();
        for(String s :as){
            if(!set1.contains(s)){
                set1.add(s);
            }else {
                res1.add(s);
            }
        }
        System.out.println("方法一:将list转换成set:");
        System.out.println("去重数组set1:"+set1);
        System.out.println("重复元素"+res1);
        System.out.println();

        //2.将list的contains();
        List<String> dere = new ArrayList<>();
        List<String> res = new ArrayList<>();
        for(String s: as){
            if(!dere.contains(s)){
                dere.add(s);
            }else {
                res.add(s);
            }
        }
        System.out.println("方法二:new list加入新元素,实质还是通过contains方法对比");
        System.out.println("去重复数组dere:" +dere);
        System.out.println("不一样的元素:"+res);
        System.out.println();

        //3.通过i,j两个指针循环:
        List<String> l3= new ArrayList<>();
        List<String> res2 = new ArrayList<>();
        for(int i =0;i<as.size();i++){
            for(int j=i+1;j<as.size();j++){
                if (as.get(j).equals(as.get(i))) {
                    res2.add(as.get(j));
                    as.remove(j);
                }
            }
        }
        System.out.println("方法三:双循环:");
        System.out.println("去重复数组dere:"+as);
        System.out.println("不一样的元素:"+res2);
        System.out.println();

        //4.利用Java8 的流:
        List ls4 = as.stream().distinct().collect(Collectors.toList());
        System.out.println("方法四:java8stream特性:"+ls4);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。