Java 中對 ArrayList 進行排序,核心在於 Collections.sort() 搭配 Comparator 或實作 Comparable 介面。本文透過兩個完整範例,示範如何依年齡、姓名等欄位排序自訂物件。
import java.util.*;
class Student {
private String name;
private int age;
// 建構子、getter/setter 略
}
class SortByAge implements Comparator<Student> {
@Override
public int compare(Student s1, Student s2) {
return Integer.compare(s1.getAge(), s2.getAge());
}
}
class SortByName implements Comparator<Student> {
@Override
public int compare(Student s1, Student s2) {
return s1.getName().compareTo(s2.getName());
}
}
public class Test {
public static void main(String[] args) {
List<Student> list = new ArrayList<>();
list.add(new Student("丁曉宇", 21));
list.add(new Student("趙四", 22));
list.add(new Student("張三", 11));
list.add(new Student("劉武", 19));
System.out.println("依年齡排序:");
Collections.sort(list, new SortByAge());
list.forEach(s -> System.out.println(s.getName() + " / " + s.getAge()));
System.out.println("依姓名排序:");
Collections.sort(list, new SortByName());
list.forEach(s -> System.out.println(s.getName() + " / " + s.getAge()));
}
}
class Person {
String name;
int age;
// 建構子、getter/setter 略
}
class MyComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
// 年齡降序
return Integer.compare(p2.getAge(), p1.getAge());
}
}
public class ListSort {
public static void main(String[] args) {
List<Person> list = new ArrayList<>();
list.add(new Person("lcl", 28));
list.add(new Person("fx", 23));
list.add(new Person("wqx", 29));
Collections.sort(list, new MyComparator());
list.forEach(p -> System.out.println(p.getName() + " " + p.getAge()));
}
}
list.sort(Comparator.comparing(Student::getAge))。String 列表可直接 Collections.sort(list)。