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

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

相关推荐
自信的未来9 小时前
JSON 工具|Web Worker 工程化打包 + 语法自动修复 + 多语言代码生成实战
java·前端·json
Brookty9 小时前
【JavaEE】线程安全(一).4:写块串行保安全、CAS
java·开发语言·java-ee·多线程·线程安全
怕孤单的草丛9 小时前
缓存管理面临的主要问题
java·数据库·缓存
犀利豆12 小时前
AI in Harness(二)
java·人工智能·后端
沉静的小伙13 小时前
在微服务中使用领域事件
java·运维·微服务
程序员在囧途13 小时前
likeadmin-api API 算力超市怎么做供应商切换?统一鉴权、task_id 和 callback_url 才能稳交付
java·服务器·数据库·开放api·likeadmin-api·api算力超市
醇氧13 小时前
Spring 容器 Map 注入机制详解
java·后端·spring
ylscode14 小时前
Cloudflare Workers Cache 深度解析:边缘缓存如何重塑无服务器性能边界
java·spring·mybatis
栈溢出了14 小时前
Java Lambda 表达式笔记
java·开发语言·intellij-idea