新增排序功能在student manager class,在管理多筆資料時,排序可以讓資料更有結構:
依年齡排序:快速找出最小/最大年齡
依姓名排序:更方便查找
在 Java 裡,排序通常透過 Collections.sort() 或 List.sort() 搭配 Comparator 來完成。
Java 的 sort 方法
需要元素本身 implements Comparable(例如 String、Integer 都有內建)。
範例:
ArrayList names = new ArrayList<>();
names.add("Tom");
names.add("Lily");
names.add("Eric");
Collections.sort(names); // 預設字母順序
System.out.println(names); // [Eric, Lily, Tom]
可以傳入 Comparator 物件,自訂排序規則。
範例:
ArrayList ages = new ArrayList<>();
ages.add(20);
ages.add(18);
ages.add(22);
ages.sort(Comparator.naturalOrder()); // 小到大
System.out.println(ages); // [18, 20, 22]
ages.sort(Comparator.reverseOrder()); // 大到小
System.out.println(ages); // [22, 20, 18]
傳統匿名類別:
students.sort(new Comparator() {
@Override
public int compare(Student s1, Student s2) {
return s1.getAge() - s2.getAge();
}
});
Lambda 簡化:
students.sort((s1, s2) -> s1.getAge() - s2.getAge());
Method reference:
students.sort(Comparator.comparing(Student::getAge));
最後整合的實作: