JDK8的排序大法!!
轉載自 屌炸天,JDK8的排序大法!!
今天總結了下JDK中排序的方法,包括JDK8中強大的lambda表示式及函式式介面運用,不廢話,請看下面示例。
public class Test {
public static void main(String[] args) {
List<User> list = initList();
// jdk8之前的排序
Collections.sort(list, new Comparator<User>() {
@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<User> initList() {
List<User> 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;
}
}
相關文章
- 和重啟大法一樣,重灌大法也很好用
- Jdk8的安裝JDK
- JDK8的新特性JDK
- 切片擴容大法
- JDK8中的並行流JDK並行
- 升級JDK8的坎坷之路JDK
- JDK8新特性JDK
- JS實現複製大法JS
- 5.PS摳圖大法
- 程式語言註釋大法
- Java除錯大法,來了~Java除錯
- 推動 IT 轉型的三大法寶
- centos安裝jdk8CentOSJDK
- JDK8 flatmap函式JDK函式
- JDK8特性之LocalDateTimeJDKLDA
- 我要曝光!CDN 省錢大法!
- 結對程式設計大法好程式設計
- UI 自動化框架 yaml 大法UI框架YAML
- 通過例項理解 JDK8 的 CompletableFutureJDK
- JDK8 API 英文版JDKAPI
- HashMap原始碼分析(JDK8)HashMap原始碼JDK
- JDK8新特性詳解JDK
- JDK8新特性之stream()JDK
- JDK8基礎映象包JDK
- JDK8中Stream使用解析JDK
- 終極找 bug 大法 - 二分
- HashSet的add的實現原理深入刨析[jdk8]JDK
- 條件佇列大法好:wait和notify的基本語義佇列AI
- 索尼大法好,未出世的PS4Slim也要支援PSVRVR
- JDK8生產引數的學習與整理JDK
- TLS 1.3已反向移植到的Oracle JDK8 - OracleTLSOracleJDK
- 「Window平臺」異常掛鉤大法(1)
- CentOS 7 - 安裝Oracle JDK8CentOSOracleJDK
- JDK8新特性之Stream流JDK
- Centos7安裝jdk8CentOSJDK
- jdk8:垃圾回收演算法JDK演算法
- idea建立SpringBoot選不了JDK8IdeaSpring BootJDK
- JDK8到底有啥特性JDK