@
- 背景
- 原始碼
- 由小到大排序
- 由大到小排序
背景
原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