compareTo 메소드는 Comparable 인터페이스를 구현하는 유일한 메소드이다. Comparable인터페이스를 구현하는 클래스의 객체들은 자연적 순서를 갖게 된다.Comparable을 구현한 객체들의 배열을 정렬하는 것은 아래처럼 아주 간단하다.


 마찬가지로 Comparable 인터페이스를 구현한 객체들은 검색하거나 최대/최소치 계산하기도 간단하다. 그러므로

알파벳 순서나 값의 크기, 또는 시간적 선후관계처럼 명확한 자연적 순서를 따르는 값 클래스를 구현할 때는 Comparable 인터페이스를 구현할 것을 고려해봐야 한다.

compareTo 메소드는 이 객체의 값이 인자로 주어진 객체보다 작으면 음수를, 같으면 0을, 크면 양수를 반환한다.

compareTo 규약

-객체 참조를 비교하는 방향을 뒤집어도 객체 간 대소 관계는 그대로 유지되어야 한다. 즉 만일 첫 번째 객체가 두번째 객체봐 작다면, 두 번째 객체는 첫 번째 객체보다 큰 객체여야 한다. ( a.compareTo(b) 가 1이면 b.compareTo(a) 는 -1 이어야 한다.)


-첫 번째 객체가 두 번째 객체보다 크고 두 번째 객체가 세 번째 ㄱ개체보다 클 경우 첫 번째 객체는 반드시 세 번째 객체보다 커야 한다.

(a.compareTo(b) 가 1이고 , b.compareTo(c)가 1이면 , a.compareTo(c) 는 1이다.)


-비교결과 같다고 판정된 모든 객체 각각을 다른 어떤 객체와 비교할 경우, 그 비교 결과는 전부 통일해야 한다.


즉, 반사성, 대칭성, 추이성을 만족해야 한다는 것인데 이는 equals의 규약과 같다.




+ Recent posts