CompareTo (Object o) 메서드는 입력 매개변수로 받는 o의 비교값과 compareTo 메서드를 실행할 객체의 비교값을 비교하여 음수를 리턴하는 경우는 this가 먼저, 양수를 리턴하는 경우는 o가 먼저인 순서로 sort된다
이 메서드의 핵심은 객체의 값을 비교하는 것이다.
Comparable<해당타입>
을 상속한다.@Override compareTo
메서드를 구현한다.class Student implements Comparable<Student> {
String name;
int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int compareTo(Student target) {
return this.age <= target.age ? 1 : - 1; // 나이 내림차순
}
@Override
public String toString() {
return "이름 : " + name + ", 나이 : " + age;
}
}
우선순위 큐에서 지정한 타입이 만약 사용자가 선언한 클래스 타입이라면 해당 클래스에서 우선순위 큐에 넣을 정렬 기준을 미리 지정해줄 수 있다.
기본타입은 내부적으로 compareTo가 구현되어 있어서 Arrays.sort(배열)로 정렬이 가능하지만
사용자가 직접 선언한 타입의 객체는 그렇게 정렬이 불가능하다.
하지만 위의 활용처럼 Comparable을 상속받아 compareTo 메서드를 오버라이드해서 정렬 기준을 미리 알려주면
단순이 Collections.sort(해당타입의 객체들이 들어간 배열)
만 해주면 알아서 그 기준에 따라 정렬이 된다.