Comparable 인터페이스를 구현하며, compareTo 메서드를 원하는 비교 방식으로 정의한다. class Student implements Comparable<Student> {
int age;
int classNumber;
Student(int age, int classNumber) {
this.age = age;
this.classNumber = classNumber;
}
public int compareTo(Student o) {
return -(this.classNumber - o.classNumber);
// 음수면 오름차순 & 양수면 내림차순
}
}
위와 같이 구현하였을 때, Arrays.sort를 하면 compareTo에서 정의된 방식으로 정렬된다.
따라서 오름차순 or 내림차순 정렬을 각 객체의 필드 값으로 따로 정렬할 수 있게 된다.
public class Main {
public static void main(String[] args) throws IOException {
Comparator<Student> comp1 = new Comparator<>() {
public int compare(Student o1, Student o2) {
return o1.classNumber - o2.classNumber;
}
};
Student s1 = new Student(20,3);
Student s2 = new Student(13,1);
Student s3 = new Student(19,2);
Student[] students = {s1, s2, s3};
int result = comp1.compare(s1, s2);
if (result > 0) {
System.out.println("s2 < s1");
}
else if (result == 0) {
System.out.println("=");
}
else {
System.out.println("s2 > s1");
}
}
}
익명 객체를 생성하여 해당 객체 안에서 compare 메서드를 정의하며 비교하고자 하는 방식을 구현한다.