<aside> ☑️ Comparable, Comparator를 한마디로? → 한 마디로 말하자면, 객체에 대한 비교 기준을 정해주는 인터페이스 라 생각하면 된다. Comparable, Comparator의 차이점을 한마디로?
→ Comparable은 객체 자체에 부여된 기본 정렬 기준을 의미한다. 반면 Comparator는 기본 오름차순 규칙외의 다른 규칙들을 직접 구현할수 있다. (내림차순 등)
</aside>
https://dev-daddy.tistory.com/23
[Comparable]
<aside> ☑️ https://st-lab.tistory.com/243 - 참고한 글 https://codechacha.com/ko/java-sorting-comparable/
</aside>
int a = 3; int b=5;
if(a>b) System.out.println("a가 b보다 크다");
기본 자료형 (Primitive)자료형 예를 들어 int a=3; 과 같은 자료형들은 일반적인 산술비교 연산자로 바로 비교 가능하다.
하지만, 기본 자료형이 아니라 참조형, 즉 클래스타입과 같은 객체들은 어떻게 비교할 것인가? 예를 들어 다음과 같은 객체가 있다고 해보자
public class Test{
Student a = new Student(17, 2); //17살 2반
Student b = new Student(18, 1); //18살 1반
//a와 b를 어떻게 비교할것인가?
}
class Student {
int age;
int classNumber;
Studuent(int age, int classNumber){
this.age = age;
this.classNumber = classNumber;
}
}
a학생과 b학생의 두 객체를 비교한다고 하면 나이로 비교할 것인가? 학급 반으로 비교할것인가? 또 문법적으로 그냥 산술비교 연산자를 이용하면 되는 것인가?
본질적으로 객체는 사용자가 기준을 정해주지 않는 이상 어떤 객체가 더 높은 우선순위를 갖는지 판단 할 수다.
다른 사람의 말을 차용하자면 본질적으로 객체는 사용자가 기준을 정해주지 않으면 우선순위를 판단할수 없다고 한다. 이때 Comparable과 Comparator가 객체의 기준에 따라 비교하는 것을 도와주는 역할을 해준다고 한다.
Comparable과 Comparator는 Interface이다.
Comparable(T o) - @Override compareTo(T o), 를 구현해야 함 (인자 1개)