美文网首页IT@程序员猿媛程序员
Java集合去重的几种方法

Java集合去重的几种方法

作者: 爱宝宝n | 来源:发表于2019-04-26 19:13 被阅读12次

一、基础数据类型集合去重:

例:String

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("c");
        list.add("c");
        list.add("a");
        list.add("a");
        list.add("b");
        //1.set集合去重,不改变原有的顺序
        pastLeep1(list);
        //2.遍历后判断赋给另一个list集合  不改变原有的顺序
        pastLeep2(list);
        //3.set去重  并按自然顺序排序
        pastLeep3(list);
        //4.set去重(缩减为一行)
        pastLeep4(list);
        //5.去重并按自然顺序排序
        pastLeep5(list);

    }

方法实现:

 //1.set集合去重,不改变原有的顺序
    public static void pastLeep1(List<String> list){
        System.out.println("list = [" + list.toString() + "]");
        List<String> listNew=new ArrayList<>();
        Set set=new HashSet();
        for (String str:list) {
            if(set.add(str)){
                listNew.add(str);
            }
        }
        System.out.println("listNew = [" + listNew.toString() + "]");
    }

    //2.遍历后判断赋给另一个list集合 不改变原有的顺序
    public static void pastLeep2(List<String> list){
        System.out.println("list = [" + list.toString() + "]");
        List<String> listNew=new ArrayList<>();
        for (String str:list) {
            if(!listNew.contains(str)){
                listNew.add(str);
            }
        }
        System.out.println("listNew = [" + listNew.toString() + "]");
    }

    //3.set去重  并按自然顺序排序
    public static void pastLeep3(List<String> list){
        System.out.println("list = [" + list + "]");
        Set set = new HashSet();
        List<String> listNew=new ArrayList<>();
        set.addAll(list);
        listNew.addAll(set);
        System.out.println("listNew = [" + listNew + "]");
    }

    //4.set去重(缩减为一行) 并按自然顺序排序
    public static void pastLeep4(List<String> list){
        System.out.println("list = [" + list + "]");
        List<String> listNew=new ArrayList<>(new HashSet(list));
        System.out.println("listNew = [" + listNew + "]");
    }

    //5.去重并按自然顺序排序
    public static void pastLeep5(List<String> list){
        System.out.println("list = [" + list + "]");
        List<String> listNew=new ArrayList<>(new TreeSet<String>(list));
        System.out.println("listNew = [" + listNew + "]");
    }

二、对象根据指定属性去重

 List<User>userList = new ArrayList<>();
        userList.add(new User(1,"小李","男"));
        userList.add(new User(5,"小李","男"));
        userList.add(new User(7,"小李","男"));
        userList.add(new User(3,"小李","男"));
        userList.add(new User(1,"小李","男"));
        userList.add(new User(5,"小李","男"));
        //6.对象 根据指定属性去重 并按自然顺序排序
        System.out.println(removeDuplicateUser(userList));
        //7. 根据指定属性去重 并按自然顺序排序2
        System.out.println(removeDuplicateUser2(userList));
   //6.对象 根据指定属性去重 并按自然顺序排序
    public static ArrayList<User> removeDuplicateUser(List<User> users) {
        Set<User> set = new TreeSet<User>(new Comparator<User>() {
            @Override
            public int compare(User o1, User o2) {
                return new Integer(o1.getId()).compareTo(new Integer(o2.getId()));
            }
        });
        set.addAll(users);
        return new ArrayList<User>(set);
    }

    //7. 根据指定属性去重 并按自然顺序排序2
    public static List<User> removeDuplicateUser2(List<User> list){
        List<User> unique = list.stream().collect(
                collectingAndThen(
                        toCollection(() -> new TreeSet<>(comparingLong(User::getId))), ArrayList::new)
        );
        return unique;
    }

相关文章

  • Java集合去重的几种方法

    一、基础数据类型集合去重: 例:String 方法实现: 二、对象根据指定属性去重

  • java集合去重

  • 数组去重

    推荐几种数组去重的方法

  • 一、JAVA去重

    版本Java8 1、字符串集合去重 2、根据对象属性去重

  • js算法题

    1.数组去重 方法一:利用嵌套for循环和splice去重 方法二:利用indexOf去重 方法三:利用Set集合...

  • day1

    oc对象读取属性值的几种方法 遍历类所有属性名称 遍历集合的几种方式 协议(Protocol)类似于java的in...

  • 数组去重方法集合

    1.for循环 + indexOf() + push() 2. for循环 + indexOf() + push(...

  • 如何过滤Java集合中的元素

    1. Overview 在本篇简短的教程中,我们将学习在Java中过滤集合元素的几种方法,过滤其实就是找到集合中满...

  • [js][实战][去重][总结] - 运用es6优化js数组去重

    原文出自本人博客:js去重的几种常用方法 总结在前 在项目中进行array去重常用有一下几种方法。 1.使用for...

  • Array集结号

    实现数组去重的几种方法 数组去重一 数组去重二 利用数组indexof+push实现数组去重 数组去重三 利用对象...

网友评论

    本文标题:Java集合去重的几种方法

    本文链接:https://www.haomeiwen.com/subject/cgftnqtx.html