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());
                });

运行结果

相关推荐
AI科技星6 分钟前
时空的固有脉动:波动方程 ∇²L = (1/c²) ∂²L/∂t² 的第一性原理推导、诠释与验证
数据结构·人工智能·算法·机器学习·重构
独自破碎E7 分钟前
Leetcode862和至少为K的最短子数组
java·开发语言
To Be Clean Coder10 分钟前
【Spring源码】getBean源码实战(二)
java·后端·spring
2401_8414956428 分钟前
【LeetCode刷题】寻找重复数
数据结构·python·算法·leetcode·链表·数组·重复数
washingtin35 分钟前
Get “https://registry-1.docker.io/v2/“: context deadline exceeded
java·开发语言
一路往蓝-Anbo1 小时前
C语言从句柄到对象 (七) —— 给对象加把锁:RTOS 环境下的并发安全
java·c语言·开发语言·stm32·单片机·嵌入式硬件·算法
利刃大大1 小时前
【SpringBoot】validation参数校验 && JWT鉴权实现 && 加密/加盐
java·spring boot·jwt·加密
小北方城市网1 小时前
第 3 课:前后端全栈联动核心 —— 接口规范 + AJAX + 跨域解决(打通前后端壁垒)
java·大数据·网络·python
Joe_Blue_021 小时前
Matlab入门案例介绍—常用的运算符及优先级
开发语言·数据结构·matlab·matlab基础入门案例介绍
降临-max1 小时前
JavaWeb企业级开发---MySQL
java·开发语言·数据库·笔记·后端·mysql