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;
}
}
相關文章
- APP瘦身大法--AndResGuard的使用APP
- JDK8的新特性JDK
- Jdk8的安裝JDK
- jdk8JDK
- Google搜尋大法Go
- 窗體遷移大法
- 升級JDK8的坎坷之路JDK
- JDK8中的並行流JDK並行
- JDK8新特性JDK
- Java除錯大法,來了~Java除錯
- JS實現複製大法JS
- 程式語言註釋大法
- PostgreSQL資料去重大法SQL
- 推動 IT 轉型的三大法寶
- Vue中學到的功夫,隔山打牛大法Vue
- 防毒軟體NOD32的提示遮蔽大法防毒
- 優秀程式設計師的 18 大法則程式設計師
- centos安裝jdk8CentOSJDK
- UI 自動化框架 yaml 大法UI框架YAML
- 結對程式設計大法好程式設計
- JDK8新特性詳解JDK
- JDK8新特性之stream()JDK
- JDK8中Stream使用解析JDK
- JDK8 API 英文版JDKAPI
- JDK8特性之LocalDateTimeJDKLDA
- HashMap原始碼分析(JDK8)HashMap原始碼JDK
- JDK8 flatmap函式JDK函式
- JDK8基礎映象包JDK
- Debian 高階安裝大法(轉)
- 脫殼後軟體減肥大法
- Windows被刪檔案回收大法 (轉)Windows
- 通過例項理解 JDK8 的 CompletableFutureJDK
- osx中讓idea支援jdk8的方法IdeaJDK
- 愛奇藝的資料庫選型大法,實用不糾結!資料庫
- jdk8:垃圾回收演算法JDK演算法
- CentOS 7 - 安裝Oracle JDK8CentOSOracleJDK
- JDK8新特性詳解(一)JDK
- JDK8新特性(4)—— stream 流JDK