要實現自定義排序,需要在創建TreeSet對象時傳入一個Comparator對象,該對象定義了元素的比較規則。
例如,假設有一個類Person,需要按照年齡從小到大排序:
import java.util.Comparator;
import java.util.TreeSet;
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) {
TreeSet<Person> treeSet = new TreeSet<>(new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
return Integer.compare(p1.getAge(), p2.getAge());
}
});
treeSet.add(new Person("Alice", 25));
treeSet.add(new Person("Bob", 30));
treeSet.add(new Person("Charlie", 20));
for (Person person : treeSet) {
System.out.println(person.getName() + " " + person.getAge());
}
}
}
在上面的代碼中,創建了一個TreeSet對象treeSet并傳入了一個Comparator對象,定義了按照Person對象的age屬性進行排序的規則。最后輸出結果為:
Charlie 20
Alice 25
Bob 30