List的各种排序

目录

Collections.sort对list进行排序

对象中某个属性进行排序

通过比较器进行比较

JAVA8特性Stream流进行排序

Stream升降序组合使用


Collections.sort对list进行排序

java 复制代码
public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(3);
        list.add(1);
        list.add(2);

        Collections.sort(list);
        for (Integer integer : list) {
            System.out.println(integer);
        }
    }

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("d");
        list.add("c");
        list.add("b");
        Collections.sort(list);
        for (String integer : list) {
            System.out.println(integer);
        }
    }

运行结果

对象中某个属性进行排序

java 复制代码
//升序
list.sort(Comparator.comparing(User::getName));
//降序
list.sort(Comparator.comparing(User::getName).reversed());

运行结果

通过比较器进行比较

java 复制代码
//升序降级通过改变其中的参数确定
Collections.sort(list, new Comparator<User>(){
            @Override
            public int compare(User stu1, User stu2) {
                // TODO Auto-generated method stub

                return stu2.getName().compareTo(stu1.getName());
            }

        });

运行结果

JAVA8特性Stream流进行排序

java 复制代码
//升序
List<User> collect = list.stream().sorted(Comparator.comparing(User::getName))
.collect(Collectors.toList());

//降序
List<User> collect = list.stream().sorted(Comparator.comparing(User::getName).reversed())
.collect(Collectors.toList());

Stream升降序组合使用

java 复制代码
//先按照年龄进行升序,然后按照姓名降序
        list.stream().sorted(Comparator.comparing(User::getAge).thenComparing(User::getName).reversed()).collect(Collectors.toList())
                .forEach(s->{
                    System.out.println(s.getName()+s.getAge());
                });

运行结果

相关推荐
野犬寒鸦16 小时前
从零起步学习并发编程 || 第四章:synchronized底层源码级讲解及项目实战应用案例
java·服务器·开发语言·jvm·后端·学习·面试
!停16 小时前
数据结构二叉树——堆
java·数据结构·算法
virus59451 天前
悟空CRM mybatis-3.5.3-mapper.dtd错误解决方案
java·开发语言·mybatis
鱼跃鹰飞1 天前
Leetcode会员尊享100题:270.最接近的二叉树值
数据结构·算法·leetcode
Queenie_Charlie1 天前
小陶的疑惑2
数据结构·c++·树状数组
没差c1 天前
springboot集成flyway
java·spring boot·后端
时艰.1 天前
Java 并发编程之 CAS 与 Atomic 原子操作类
java·开发语言
编程彩机1 天前
互联网大厂Java面试:从Java SE到大数据场景的技术深度解析
java·大数据·spring boot·面试·spark·java se·互联网大厂
笨蛋不要掉眼泪1 天前
Spring Boot集成LangChain4j:与大模型对话的极速入门
java·人工智能·后端·spring·langchain
Yvonne爱编码1 天前
JAVA数据结构 DAY3-List接口
java·开发语言·windows·python