Java Comparator와 Comparable
by 볼빵빵오춘기Comparator 와 Comparable
객체 정렬에 필요한 메서드(정렬기준 제공)를 정의한 인터페이스
compare()와 compareTo()는 두 객체의 비교결과를 반환하도록 작성한다.
Comparable
기본 정렬기준을 구현하는데 사용한다.(o1와 o2를 비교 ⇒ 결과가 양수면 왼쪽이 큰 것, 0이면 같은 것, 음수면 오른쪽이 큰 것이다.)
Comparator
기본 정렬기준 외에 다른 기준으로 정렬하고자할 때 사용한다.(o와 this 비교)
예제 코드
더보기

import java.util.Arrays;
import java.util.Comparator;
public class Try {
public static void main(String[] args) {
String[] strArr = {"cat", "Dog", "lion", "tiger"};
Arrays.sort(strArr); // String의 Comparable구현에 의한 정렬
System.out.println("strArr=" + Arrays.toString(strArr));
Arrays.sort(strArr, String.CASE_INSENSITIVE_ORDER); // 대소문자 구분안함
System.out.println("strArr=" + Arrays.toString(strArr));
Arrays.sort(strArr, new Descending()); // 역순 정렬
System.out.println("strArr=" + Arrays.toString(strArr));
}
}
class Descending implements Comparator {
public int compare(Object o1, Object o2){
if( o1 instanceof Comparable && o2 instanceof Comparable) {
Comparable c1 = (Comparable)o1;
Comparable c2 = (Comparable)o2;
return c1.compareTo(c2) * -1 ; // -1을 곱해서 기본 정렬방식의 역으로 변경한다.
// 또는 c2.compareTo(c1)와 같이 순서를 바꿔도 된다.
}
return -1;
}
}

Integer와 Comparable
'👩🏻💻 About 프로그래밍 > Java' 카테고리의 다른 글
Java TreeSet, 이진 탐색 트리(binary seach tree), TreeSet 생성자 · 메서드, 트리 순회(tree traversal) (0) | 2023.12.07 |
---|---|
Java HashSet, TreeSet, HashSet의 주요 메서드 (1) | 2023.12.07 |
Java Arrays, 배열의 출력·복사·채우기·정렬·검색 등 (0) | 2023.12.07 |
Java Iterator, ListIterator, Enumration, Map과 Iterator (0) | 2023.12.07 |
Java 스택과 큐(Stack & Queue), 스택& 큐 활용 (0) | 2023.12.07 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기