티스토리 뷰

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

더보기

 

정렬 방법(로직) - 불변 ⭐️

  1. 두 대상 비교
  2. 자리바꿈(두 과정 반복)

정렬 기준 제공 - 가변

  • 우리는 정렬기준만 작성하면 된다.(정렬 로직은 바뀌지 않기 때문)

 

'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
댓글
공지사항