屌炸天,JDK8的排序大法!!

简介: 首先祝大家端午节快乐!今天总结了下JDK中排序的方法,包括JDK8中强大的lambda表达式及函数式接口运用,不废话,请看下面示例。public class Test {public static void main(String[] args)...

首先祝大家端午节快乐!

今天总结了下JDK中排序的方法,包括JDK8中强大的lambda表达式及函数式接口运用,不废话,请看下面示例。

public class Test {

public static void main(String[] args) {

List list = initList();

// jdk8之前的排序

Collections.sort(list, newComparator() {

@Override

public int compare(User o1, User o2) {

return o1.getAge().compareTo(o2.getAge());

}

});

// jdk8 lambda排序,带参数类型

list = initList();

list.sort((User u1, User u2) -> u1.getAge().compareTo(u2.getAge()));

list.forEach(System.out::println);

System.out.println();

// jdk8 lambda排序,不带参数类型

list = initList();

list.sort((u1, u2) -> u1.getAge().compareTo(u2.getAge()));

list.forEach(System.out::println);

System.out.println();

// jdk8 排序,User类静态方法引用

list = initList();

list.sort(User::compareAge);

list.forEach(System.out::println);

System.out.println();

// jdk8 升序排序,Comparator提供的静态方法

list = initList();

Collections.sort(list, Comparator.comparing(User::getAge));

list.forEach(System.out::println);

System.out.println();

// jdk8 降序排序,Comparator提供的静态方法

list = initList();

Collections.sort(list, Comparator.comparing(User::getAge).reversed());

list.forEach(System.out::println);

System.out.println();

// jdk8 组合排序,Comparator提供的静态方法,先按年纪排序,年纪相同的按名称排序

list = initList();

Collections.sort(list, Comparator.comparing(User::getAge).thenComparing(User::getName));

list.forEach(System.out::println);

}

private static List initList() {

List list = new ArrayList<>();

list.add(new User("lisa", 23));

list.add(new User("tom", 11));

list.add(new User("john", 16));

list.add(new User("jennis", 26));

list.add(new User("tin", 26));

list.add(new User("army", 26));

list.add(new User("mack", 19));

list.add(new User("jobs", 65));

return list;

}

}

看完有没有觉得很惊艳,简直屌炸天,Lumbda表达式+函数式接口还有更多强大的应用下回再做个专题介绍。

相关文章
|
设计模式 搜索推荐 算法
JDK中的排序:Arrays.sort的源码实现
JDK中的排序:Arrays.sort的源码实现
560 0
JDK中的排序:Arrays.sort的源码实现
屌炸天,JDK8的排序大法!!
今天总结了下JDK中排序的方法,包括JDK8中强大的lambda表达式及函数式接口运用,不废话,请看下面示例。
|
3月前
|
Java
安装JDK18没有JRE环境的解决办法
安装JDK18没有JRE环境的解决办法
364 3
|
4月前
|
Oracle Java 关系型数据库
Mac安装JDK1.8
Mac安装JDK1.8
759 4
|
4月前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
62 1
|
5月前
|
Java Linux
Linux复制安装 jdk 环境
Linux复制安装 jdk 环境
114 3
|
23天前
|
Oracle Java 关系型数据库
安装 JDK 时应该注意哪些问题
选择合适的JDK版本需考虑项目需求与兼容性,推荐使用LTS版本如JDK 17或21。安装时注意操作系统适配,配置环境变量PATH和JAVA_HOME,确保合法使用许可证,并进行安装后测试以验证JDK功能正常。
44 1
|
23天前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
51 1
|
2月前
|
Oracle Java 关系型数据库
jdk17安装全方位手把手安装教程 / 已有jdk8了,安装JDK17后如何配置环境变量 / 多个不同版本的JDK,如何配置环境变量?
本文提供了详细的JDK 17安装教程,包括下载、安装、配置环境变量的步骤,并解释了在已有其他版本JDK的情况下如何管理多个JDK环境。
1138 0
|
4月前
|
Java 开发工具
开发工具系列 之 同一个电脑上安装多个版本的JDK
这篇文章介绍了如何在一台电脑上安装和配置多个版本的JDK,包括从官网下载所需JDK、安装过程、配置环境变量以及如何查看和切换当前使用的JDK版本,并提到了如果IDEA和JDK版本不兼容时的解决方法。
开发工具系列 之 同一个电脑上安装多个版本的JDK