Comparable — 비교 가능 인터페이스

Comparable — 비교 가능 인터페이스

Comparable 인터페이스는 이 인터페이스를 구현하는 각 클래스의 객체에 전체 순서(total ordering)를 부여합니다. 이 순서를 클래스의 자연 순서(natural ordering)라고 부르며, 클래스의 compareTo 메서드를 자연 비교 메서드(natural comparison method)라고 합니다.

출처: Java API Reference

본문

이 인터페이스를 구현하는 객체의 목록(과 배열)은 Collections.sortArrays.sort로 자동 정렬할 수 있습니다. 이 인터페이스를 구현하는 객체는 비교기(comparator)를 지정하지 않고도 정렬된 맵의 키나 정렬된 집합의 요소로 사용할 수 있습니다.

public interface Comparable<T>

자연 순서와 equals의 일관성

클래스 C의 자연 순서가 equals와 일치한다고 말하는 것은, C의 모든 e1, e2에 대해 e1.compareTo(e2) == 0e1.equals(e2)와 같은 불리언 값을 가질 때입니다. null은 어떤 클래스의 인스턴스도 아니므로, e.equals(null)false를 반환하더라도 e.compareTo(null)NullPointerException을 던져야 합니다.

명시적 비교기가 없는 정렬된 집합(과 맵)은 자연 순서가 equals와 일치하지 않는 요소(또는 키)와 함께 사용되면 "이상하게" 동작하므로, 자연 순서가 equals와 일치하게 하는 것이 강력히 권장됩니다.

거의 모든 Java 핵심 클래스는 equals와 일치하는 자연 순서를 가집니다. 한 가지 예외는 BigDecimal으로, 수치 값은 같지만 표현이 다른 객체(예: 4.0과 4.00)를 동등하게 다룹니다.

메서드

int compareTo(T o)
  • compareTo는 이 객체를 지정된 객체와 비교해 음수, 0, 양수를 반환합니다.

더 알아보기 (Learn more)