티스토리 뷰
Comparator와 Comparable
- 객체 정렬에 필요한 메서드(정렬기준 제공)를 정의한 인터페이스
- compare()와 compareTo()는 두 객체의 비교 결과를 반환하도록 작성
더보기


Comparator와 Comparable
- Comparable : 기본 정렬기준을 구현하는데 사용
- Comparator : 기본 정렬기준 외에 다른 기준으로 정렬하고자할 때 사용

compare()와 compareTo()는 두 객체의 비교 결과를 반환하도록 작성
- 같으면 0, 오른쪽이 크면 음수(-), 작으면 양수(+)

예제 11-7
더보기
Arrays.sort(strArr, String.CASE_INSENSITIVE_ORDER); // 대소문자 구분안함
정렬할 때는 1. 정렬 대상과 2. 정렬기준이 필요하다. '기준'이 없으면 정렬할 수 없다.
여기에서는 정렬 대상이 'strArr'이고 정렬 기준이 'String.CASE_INSENSITIVE_ORDER'이다.
static void sort(Object[] a) // 객체 배열에 저장된 객체가 구현한 Comparable에 의한 정렬
static void sort(Object[] a, Comparator c) // 지정한 Comparator에 의한 정렬
위 첫 번째 라인의 코드처럼 '정렬 대상'만 작성하고 '정렬 기준'을 작성하지 않으면 어떻게 될까? 객체 배열(Object[ ])에 저장된 객체가 가지고 있는 Comparable을 '정렬 기준'으로 삼는다. 그래서 정렬을 할 수 있다.
public static final Comparator CASE_INSENSITIVE_ORDER
기본 정렬 기준은 사전순(ABCabc)이다. 다른 정렬기준으로 정렬하고 싶다면, 위와 같이 CASE_INSENSITIVE_ORDER을 사용한다.
Integer와 Comparable
더보기


정렬 방법(로직) - 불변 ⭐️
- 두 대상 비교
- 자리바꿈(두 과정 반복)
정렬 기준 제공 - 가변
- 우리는 정렬기준만 작성하면 된다.(정렬 로직은 바뀌지 않기 때문)
'Java의 정석_기초편' 카테고리의 다른 글
| TreeSet (0) | 2022.11.04 |
|---|---|
| HashSet (0) | 2022.11.03 |
| Arrays (0) | 2022.11.03 |
| Iterator (0) | 2022.11.03 |
| Stack과 Queue (0) | 2022.11.02 |
댓글
공지사항
