자바의 정석 ch11-30~33 Comparator와 Comparable

Luna·2023년 6월 15일
0

JAVA

목록 보기
28/32

Comparator와 Comparable

  • 객체 정렬에 필요한 메서드(정렬기준 제공)를 정의한 인터페이스
  • Comparable : 기본 정렬 기준을 구현하는데 사용
  • Comparator : 기본 정렬 기준 외에 다른 기준으로 정렬하고자 할 때 사용
// 0 = 같음, 양수 = 왼쪽이 큼, 음수 = 오른쪽이 큼
public interface Comparator {
	int compara (Object o1, Object o2); // o1, o2 두 객체를 비교
    boolean equals (Object obj); // equals를 오버라이딩 하라는 뜻
}

public interface Comparable {
	int compareto (Object o); // 주어진 객체(o)를 자신(this)과 비교
}
  • compare()와 compareTo()는 두 객체의 비교 결괄르 반환하도록 작성
    같으면 0, 오른쪽이 크면 음수(-), 작으면 양수(+)
  • 오름차순 일 때는 왼쪽값이 클 때 자리를 바꾸고, 내림차순 일 때는 오른쪽 값이 클 때 자리를 바꾼다.

예제

static void sort(Object[] a) // 객체 배열에 저장된 객체가 구현한 Comparable에 의한 정렬
static void sort(Object[] a, Comparator c) // 지정한 Comparator에 의한 정렬. (정렬대상, 정렬기준)
  • 문자열의 기본 정렬 기준은 사전 기준 (대문자 먼저, abc순)
  • '-1'을 곱하게 되면 음수는 양수로, 양수는 음수로 변하기 때문에 기존 결과의 역순으로 결과가 나온다. (아니면 자리를 바꾸면 됨)

Integer와 Comparable

  • 정렬 : 두 대상을 비교해서 자리 바꿈을 반복 (불변)
  • 정렬 기준 : 가변

ex) 버블정렬

0개의 댓글