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

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

相关推荐
技术无疆29 分钟前
ButterKnife:Android视图绑定的简化专家
android·java·android studio·android-studio·androidx·butterknife·视图绑定
ZachOn1y38 分钟前
Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 垃圾收集器
java·jvm·后端·java-ee·团队开发·个人开发
攸攸太上1 小时前
Java通配符的作用
java·学习·通配符
齐 飞1 小时前
使用jackson将xml和对象、List相互转换
xml·java·spring boot·后端·list
liwulin05061 小时前
java-在ANTLR中BaseListner的方法和词法规则的关系0.5.0
java·开发语言
SofterICer1 小时前
PE-PINCodes 规则
java
归去来兮★1 小时前
c++面向对象
java·开发语言·c++
Aimyon_361 小时前
DockerFile
java·开发语言
wrx繁星点点2 小时前
创建型模式-单例模式
java·开发语言·单例模式
guangzhi06332 小时前
JAVA执行引擎详细介绍
java·jvm