728x90
Comparator, Comparable
두 인터페이스 모두 컬렉션을 정렬하는데 필요한 메서드를 정의하고 있다.
Comparable을 구현하고 있는 클래스들은, Comparable하다. 즉 같은 타입의 인스턴스끼리 비교가 가능한 클래스 들이며
기본적으로 오름차순으로 정렬되도록 구현되어 있다.
우선 Comparable을 구현하는 방법부터 알아보겠다.
Comparable
Comparable에 있는 compareTo를 오버라이딩 해주면 되는데, 이때 오버라이드 하는 방법은 다음과 같다.
compareTo
현재 인스턴스 < 비교대상인 인스턴스 => 리턴값이 음수
현재 인스턴스 > 비교대상인 인스턴스 => 리턴값이 양수
현재 인스턴스 == 비교대상인 인스턴스 => 리턴값이 0
이는 다음과 같이 표현할 수 있다.
return 현재 인스턴스 - 비교대상인 인스턴스;
혹은
return (현재 인스턴스 < 비교대상인 인스턴스)? -1 : ((현재 인스턴스 == 비교대상인 인스턴스)? 0 : 1);
Comparator
Comparator는 말 그대로 "비교를 해주는 자" 이다. 당연하게도 비교가 가능한 Comparable한 객체들을 비교하며, 이때 Comparable의 compareTo를 통해서 비교를 수행한다.
Comparator은 위와 같이 compare 메소드를 구현하여 비교를 진행하는데 기본적으로 구현하는 방법은 다음과 같다.
compare
오름차순으로 정렬하는 경우
compare()메소드의
'첫번째 파라미터 > 두번째 파라미터' 이면 양수를,
'첫번째 파라미터 < 두번째 파라미터' 이면 음수를,
같으면 0을 리턴
return o1.compareTo(o2);
내림차순이면 반대로 리턴하면 된다.
728x90
'☕️ Java > 기본' 카테고리의 다른 글
[JAVA] Volatile 이란? (3) | 2021.12.25 |
---|---|
[JAVA] 자바의 표준 함수형 인터페이스 (0) | 2021.12.22 |
[JAVA] Arrays의 메서드 (배열의 복사, 채우기, 정렬, 검색, 비교(deepEquals)) (0) | 2021.12.19 |
[JAVA] Iterator, ListIterator, Enumeration (0) | 2021.12.19 |
[JAVA] Stack과 Queue + Deque, 우선순위 큐(PriorityQueue ) (0) | 2021.12.18 |