public interface Comparator{
int compare(Object o1,Object o2);
boolean equals(Object obj);
}
public interface Comparable{
public int compareTo(Object o)
}
comparator 와 comparable는 인터페이스이며 컬렉션을 정렬 하는데에 필요한 메서드를 정의하고 있다.
comparable 을 구현하고 있는 클래스들은 같은 타입의 인스턴스끼리 서로 비교할수 있는 클래스들, 주로 ineger와 같은 wrapper클래스와 String,Date,File과 같은 것들이며 기본적으로 오름차순, 작은값에서 큰값의 순으로 정렬되도록 구현 되있다.
comparable은 반환값이 int지만 비교하는 두객체가 같으면 0,비교하는 값보다 작으면 음수, 크면 양수를 반환한다.
※ comparable을 구현한 클래스는 기본적으로 오름차순으로 정렬되어 있지만/ 내림차순으로 정렬 or 다른 기준에 의해서 정렬되도록 하고싶을때는 comparator을 구현해서 정렬기준 제공 가능하다.
comparable= 기본정렬기준 구현하는데 사용
comparator= 기본정렬외 다른기준으로 정렬할때
static void sort(Object[]a)
static void sort(Object[] a, Comparator c)
※ sort()메서드의 경우 comparator을 지정해 주지않으면 comparable구현 기준을 따라간다.
※ 문자열 내림차순 구현은 String에 구현된 compareTo()에 -1을 곱하기만 하면 된다.