Java8 Lambda.stream.sorted() 方法使用浅析分享

文章目录

  • [Java8 Lambda.stream.sorted() 方法使用浅析分享](#Java8 Lambda.stream.sorted() 方法使用浅析分享)

Java8 Lambda.stream.sorted() 方法使用浅析分享

本文主要分享运用 Java8 中的 Lambda.stream.sorted方法排序的使用!

sorted() 重载方法一

sorted():默认自然排序;

升序

java 复制代码
 @Test
    public void testSorted1() {
        List<Integer> list = Lists.newArrayList(2,5,3,4,1,2,6,7,9,1);
        List<Integer> collect = list.stream().sorted().collect(Collectors.toList());
        System.out.println(JSONObject.toJSONString(collect));
    }

运行结果:

降序

倒序需要结合 Comparator.reverseOrder() 方法使用:

java 复制代码
 @Test
    public void testSorted1() {
        List<Integer> list = Lists.newArrayList(2,5,3,4,1,2,6,7,9,1);
        List<Integer> collect = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
        System.out.println(JSONObject.toJSONString(collect));
    }

运行结果:

sorted() 重载方法二

sorted(Comparator<? super T> comparator):通过创建 Comparator 实例,按照指定规则升/降序排序元素。

升序

按生日升序:

java 复制代码
    @Test
    public void testSorted2() {
        List<Student> list = this.getStudent();
        List<Student> collect = list.stream().sorted(Comparator.comparing(Student::getBirthday))
                .collect(Collectors.toList());
        System.out.println(JSONObject.toJSONString(collect));
    }

降序

按生日降序:

java 复制代码
	@Test
    public void testSorted2() {
        List<Student> list = this.getStudent();
        List<Student> collect = list.stream().sorted(Comparator.comparing(Student::getBirthday, Comparator.reverseOrder()))
                .collect(Collectors.toList());
        System.out.println(JSONObject.toJSONString(collect));
    }	

多字段排序

排序说明:

  1. 生日升序;

  2. 学号降序;

java 复制代码
 	@Test
    public void testSorted2() {
        List<Student> list = this.getStudent();
        List<Student> collect = list.stream().sorted(Comparator.comparing(Student::getBirthday)
                        .thenComparing(Student::getNum, Comparator.reverseOrder()))
                .collect(Collectors.toList());
        System.out.println(JSONObject.toJSONString(collect));
    }

运行结果:

mock代码

student对象:

java 复制代码
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Student {

    /**
     * 姓名
     */
    private String name;
    /**
     * 年龄
     */
    private Integer age;
    /**
     * 生日
     */
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date birthday;
    /**
     * 学号
     */
    private Integer num;

}

mock数据:

java 复制代码
public List<Student> getStudent() {
        return Lists.newArrayList(
                new Student("小张", 17, DateUtil.parse("2006-10-03 15:18:56"), 11),
                new Student("小李", 15, DateUtil.parse("2008-03-19 02:18:56"), 5),
                new Student("小李", 15, DateUtil.parse("2008-03-19 02:18:56"), 2),
                new Student("小王", 16, DateUtil.parse("2007-02-21 22:18:56"), 29));
    }
eUtil.parse("2008-03-19 02:18:56"), 2),
                new Student("小王", 16, DateUtil.parse("2007-02-21 22:18:56"), 29));
    }

感 谢 各 位 大 佬 的 阅 读,随 手 点 赞,日 薪 过 万~! !!

相关推荐
饺子大魔王的男人5 分钟前
Remote JVM Debug+cpolar 让 Java 远程调试超丝滑
java·开发语言·jvm
Hx_Ma167 小时前
SpringMVC框架提供的转发和重定向
java·开发语言·servlet
期待のcode8 小时前
原子操作类LongAdder
java·开发语言
舟舟亢亢9 小时前
Java集合笔记总结
java·笔记
小酒窝.9 小时前
【多线程】多线程打印ABC
java
乡野码圣9 小时前
【RK3588 Android12】RCU机制
java·jvm·数据库
JAVA+C语言9 小时前
如何优化 Java 多主机通信的性能?
java·开发语言·php
编程彩机10 小时前
互联网大厂Java面试:从分布式架构到大数据场景解析
java·大数据·微服务·spark·kafka·分布式事务·分布式架构
小酒窝.11 小时前
【多线程】多线程打印1~100
java·多线程
君爱学习11 小时前
基于SpringBoot的选课调查系统
java