List集合按照由小到大排序或者由大到小排序

刘大猫26發表於2024-11-19

@

目錄
  • 背景
  • 原始碼
  • 由小到大排序
  • 由大到小排序

背景

原List<User>裡面是無序的,比如從redis查詢等情況,查出來的是無序的,現在想按照由小到大排序或者由大到小排序。

原始碼

List<User> list = new ArrayList<>();
list.add(new User(3, "c", new Date(1686402103000L), new Date(1688994103000L)));
list.add(new User(1, "a", new Date(1686402103000L), new Date(1688994103000L)));
list.add(new User(2, "b", new Date(1686402103000L), new Date(1688994103000L)));
System.out.println("原順序" + list);

結果展示:
原順序[User(id=3, name=c, beginTime=Sat Jun 10 21:01:43 CST 2023, endTime=Mon Jul 10 21:01:43 CST 2023), User(id=1, name=a, beginTime=Sat Jun 10 21:01:43 CST 2023, endTime=Mon Jul 10 21:01:43 CST 2023), User(id=2, name=b, beginTime=Sat Jun 10 21:01:43 CST 2023, endTime=Mon Jul 10 21:01:43 CST 2023)]

由小到大排序

要按照物件的 ID 對 List 進行排序,可以使用 Java 中的 Comparator 介面和 Collections 類的 sort 方法。假設你有一個包含物件的 List,每個物件都有一個包含 ID 的屬性。
首先,需要建立一個實現了 Comparator 介面的類,用於定義比較規則。在比較規則中,我們將根據物件的 ID 進行比較。
要控制按照大到小或小到大的順序對 List 進行排序, 可以根據比較結果返回正數、負數或零。如果想要按照從小到大的順序進行排序,可以保持原有的比較邏輯不變;如果想要按照從大到小的順序進行排序,只需要反轉比較結果即可。

Collections.sort(list, new Comparator<User>() {
    @Override
    public int compare(User obj1, User obj2) {
        return Integer.compare(obj1.getId(), obj2.getId());
    }
});
System.out.println("由小到大排序" + list);

結果展示:
由小到大排序[User(id=1, name=a, beginTime=Sat Jun 10 21:01:43 CST 2023, endTime=Mon Jul 10 21:01:43 CST 2023), User(id=2, name=b, beginTime=Sat Jun 10 21:01:43 CST 2023, endTime=Mon Jul 10 21:01:43 CST 2023), User(id=3, name=c, beginTime=Sat Jun 10 21:01:43 CST 2023, endTime=Mon Jul 10 21:01:43 CST 2023)]

由大到小排序

Collections.sort(list, new Comparator<User>() {
    @Override
    public int compare(User obj1, User obj2) {
        return -Integer.compare(obj1.getId(), obj2.getId());
    }
});
System.out.println("由大到小排序" + list);

結果展示:
由大到小排序[User(id=3, name=c, beginTime=Sat Jun 10 21:01:43 CST 2023, endTime=Mon Jul 10 21:01:43 CST 2023), User(id=2, name=b, beginTime=Sat Jun 10 21:01:43 CST 2023, endTime=Mon Jul 10 21:01:43 CST 2023), User(id=1, name=a, beginTime=Sat Jun 10 21:01:43 CST 2023, endTime=Mon Jul 10 21:01:43 CST 2023)]

重要資訊

  • 官網:https://ais.cn/u/vEbMBz


相關文章