Java オブジェクトのソート方法
Javaではオブジェクトのソートを行う手法が複数あり、よく使われる方法としてComparableインターフェースまたはComparatorインターフェースを実装して比較規則を定義する方法があります。
- Comparableインタフェースを実装すると、Collections.sort()やArrays.sort()メソッドを呼び出してソートができます。Comparableインタフェースを実装する際には、オブジェクトの比較規則を定義するcompareTo()メソッドをオーバーライドします。
ネイティブな日本語でこの文を言い換えると、
public class Student implements Comparable<Student> {
private String name;
private int age;
// 构造方法、getter和setter方法
@Override
public int compareTo(Student o) {
// 根据年龄进行比较
return this.age - o.getAge();
}
}
- Comparator インタフェースを実装する: クラスが Comparable インタフェースを実装していない場合、または異なる比較基準を使用してソートしたい場合、Comparator インタフェースを実装してコンパレータを定義できます。Comparator インタフェースには、比較基準をカスタマイズするために使用される compare() メソッドがあります。
例としてコードがある
public class StudentComparator implements Comparator<Student> {
@Override
public int compare(Student s1, Student s2) {
// 根据姓名进行比较
return s1.getName().compareTo(s2.getName());
}
}
Collections.sort() または Arrays.sort() メソッドを呼び出して Comparator オブジェクトを渡すことで、ソートを実行できます。
生まれながらのリーダーのように振舞う
List<Student> students = new ArrayList<>();
// 添加学生对象到列表中
Collections.sort(students); // 使用Comparable接口进行排序
Collections.sort(students, new StudentComparator()); // 使用Comparator接口进行排序