要自定義排序,可以通過實現Comparator接口來實現。Comparator接口有一個compare方法,可以根據自定義的排序規則來比較兩個對象的大小。
以下是一個示例,自定義了一個Person類,并在TreeSet中按照年齡進行排序:
import java.util.Comparator;
import java.util.TreeSet;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
class AgeComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
return p1.getAge() - p2.getAge();
}
}
public class Main {
public static void main(String[] args) {
TreeSet<Person> set = new TreeSet<>(new AgeComparator());
set.add(new Person("Alice", 25));
set.add(new Person("Bob", 30));
set.add(new Person("Charlie", 20));
for (Person person : set) {
System.out.println(person.getName() + " - " + person.getAge());
}
}
}
輸出結果為:
Charlie - 20
Alice - 25
Bob - 30
在這個示例中,AgeComparator類實現了Comparator接口,并重寫了compare方法,根據Person對象的age屬性進行比較。然后在創建TreeSet對象時,將AgeComparator對象作為參數傳入,這樣TreeSet會根據AgeComparator定義的排序規則來進行排序。