💻공부/Java ☕️
[Java] - Comparator & Comparable
강켄트
2023. 1. 14. 17:36
Comparator & Comparable
객체 정렬에 필요한 메서드(정렬기준 제공)를 정의한 인터페이스이다.
💡정렬(sort)
두 대상을 비교 후 자리 바꿈을 반복하는 것
종류 - 오름차순, 내림차순
💡기본 정렬 조건이 오름차순인 이유
Comparable 인터페이스의 compartTo 메서드를 기준으로 하기 때문이다.
Java에서 인스턴스를 서로 비교하는 클래스들은 모두 Comparable 인터페이스가 구현되어 있다.
- Comparable : 기본 정렬기준을 구현하는데 사용
- Comparator : 기본 정렬기준 외에 다른 기준으로 정렬하고자할 때 사용
public interface Comparable{
int compareTo(Object o); //자기 자신과 객체 o를 자신과 비교
}
public interface Comparator{
int compare(Object o1, Object o2); //o1, o2 두 객체를 비교해서 정수로 반환
}
사용 방법
compare()와 compareTo()는 두 객체의 비교결과를 반환하도록 작성한다.
비교결과를 정수로 반환한다.
같으면 | 0 | |
왼쪽이 크면 | 양수 | 오름차순 |
오른쪽이 크면 | 음수 | 내림차순 |
예시)
public final class Integer extends Number implements Comparable{
//Comparable은 comareTo를 구현해야한다.(추상메서드에 몸통 만들어주기)
...
public int compareTo(Integer anotherInteger){
//두 값을 비교
int v1 = this.value;
int v2 = anotherInteger.value;
//오른쪽이 크면 -1, 같으면 0, 오른쪽이 작으면 1
return (v1<v2 ? -1 : (v1==v2 ? 0 : 1)); //3항 연산자 2번 사용한거
}
...
}