Comparable

public interface Comparable<T> {
    public int compareTo(T t);
}

⇒ 알파벳, 숫자 같이 순서가 명확한 값 클래스를 작성한다면 반드시 Comparable 인터페이스를 구현하자!

compareTo의 일반 규약

<aside> 🏷️

  1. 두 객체 참조의 순서를 바꿔 비교해도 예상한 결과가 나와야 함

  2. 추이성을 보장해야 한다.

  3. 크기가 같은 객체들끼리는 어떤 객체와 비교하더라도 항상 같아야 함

  4. (x.compareTo(y)==0) == (x.equals(y)) 를 만족하는 것이 좋음

    → (일부) Set이나 Map 메서드의 동치성 확인은 equals()가 아닌 compreTo() 메서드가 수행하기 때문!

    ex) BigDecimal : HashSet 사용 시 equals로 비교하여 원소를 2개 갖게됨. TreeSet 사용 시 compareTo로 비교해 원소를 1개 갖게됨

주의 사항