Java实现List中集合的元素进行排序

举报
共饮一杯无 发表于 2022/11/13 13:45:11 2022/11/13
【摘要】 简单集合排序 public static List<Integer> getIntegerList(){ List<Integer> integerList = new ArrayList<>(); integerList.add(23); integerList.add(15); integerList.add(35); ...

简单集合排序

    public static List<Integer> getIntegerList(){
        List<Integer> integerList = new ArrayList<>();
        integerList.add(23);
        integerList.add(15);
        integerList.add(35);
        integerList.add(68);
        integerList.add(43);
        integerList.add(8);
        return integerList;
    }

    /**
     * Integer集合排序
     */
    @Test
    public void sortIntegerList(){
        List<Integer> integerList = getIntegerList();
        System.out.println("排序前:"+integerList);
        //Integer本身有实现Comparable接口
        Collections.sort(integerList);
        System.out.println("排序后:"+integerList);
    }

输出:

排序前:[23, 15, 35, 68, 43, 8]
排序后:[8, 15, 23, 35, 43, 68]

根据对象集合某个字段排序

    public static List<User> getUserList(){
        List<User> userList = new ArrayList<>();
        userList.add(new User("小明",11,"北京",66));
        userList.add(new User("小红",12,"上海",99));
        userList.add(new User("小詹",14,"广州",77));
        userList.add(new User("小龙",16,"深圳",55));
        userList.add(new User("小斯",9,"迈阿密",33));
        userList.add(new User("小布",12,"伦敦",88));
        return userList;
    }

    @Test
    public void sortUserListByAge(){
        List<User> userList = getUserList();
        System.out.println("排序前:"+userList);
        //如果想直接通过Collections.sort(userList)排序,需要User实现Comparable接口,并重写compareTo方法
        Collections.sort(userList, new Comparator<User>() {
            @Override
            public int compare(User o1, User o2) {
                //由小到大排序
                return o1.getAge() - o2.getAge();
                //由大到小排序
                //return o2.getAge() - o1.getAge();
            }
        });
        System.out.println("排序后:"+userList);
    }

输出:

排序前:[User(name=小明, age=11, city=北京, score=66), User(name=小红, age=12, city=上海, score=99), User(name=小詹, age=14, city=广州, score=77), User(name=小龙, age=16, city=深圳, score=55), User(name=小斯, age=9, city=迈阿密, score=33), User(name=小布, age=12, city=伦敦, score=88)]
排序后:[User(name=小斯, age=9, city=迈阿密, score=33), User(name=小明, age=11, city=北京, score=66), User(name=小红, age=12, city=上海, score=99), User(name=小布, age=12, city=伦敦, score=88), User(name=小詹, age=14, city=广州, score=77), User(name=小龙, age=16, city=深圳, score=55)]

根据对象集合多个字段排序

    @Test
    public void sortUserList(){
        List<User> userList = getUserList();
        System.out.println("排序前:"+userList);
        //如果想直接通过Collections.sort(userList)排序,需要User实现Comparable接口,并重写compareTo方法
        Collections.sort(userList, new Comparator<User>() {
            @Override
            public int compare(User o1, User o2) {
                //先按照年龄排序
                int i = o1.getAge() - o2.getAge();
                if(i == 0){
                    //如果年龄相等再用分数进行排序
                    return o1.getScore() - o2.getScore();
                }
                return i;
            }
        });
        System.out.println("排序后:"+userList);
    }

输出:

排序前:[User(name=小明, age=11, city=北京, score=66), User(name=小红, age=12, city=上海, score=99), User(name=小詹, age=14, city=广州, score=77), User(name=小龙, age=16, city=深圳, score=55), User(name=小斯, age=9, city=迈阿密, score=33), User(name=小布, age=12, city=伦敦, score=88)]
排序后:[User(name=小斯, age=9, city=迈阿密, score=33), User(name=小明, age=11, city=北京, score=66), User(name=小布, age=12, city=伦敦, score=88), User(name=小红, age=12, city=上海, score=99), User(name=小詹, age=14, city=广州, score=77), User(name=小龙, age=16, city=深圳, score=55)]

本文内容到此结束了,
如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。
如有错误❌疑问💬欢迎各位大佬指出。
保持热爱,奔赴下一场山海。🏃🏃🏃

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。