1. Comparator, Comparable
Comparator 와 Comparable 은 모두 인터페이스로 컬렉션을 정렬하는데 필요한 메서드를 정의하고 있다. Comparable 을 구현하고 있는 클래스들은 같은 타입의 인스턴스끼리 서로 비교할 수 있는 클래스들이며, 기본적으로 오름차순으로 정렬하도록 구현되어 있다. 그래서 Comparable 을 구현한 클래스는 모두 비교가 가능하다는 것을 알 수 있다.
public interface Comparator {
int compare(Object o1, Object o2);
boolean equals(Object obj);
}
public interface Comparable {
public int compareTo(Object o);
}
compare() 과 compareTo() 메서드는 두 객체를 비교하는 기능을 목적으로 고안한 메서드들이다. 비교하는 객체가 같으면 0, 비교하는 값보다 작으면 음수, 크면 양수를 반환하도록 구현해야한다.
2. Comparable vs Comparator
Comparable 과 Comparator 두개의 인터페이스는 모두 객체를 비교하고 값을 정렬하는 기준으로 사용하기 위해서 구현되어지는 인터페이스 들이다. 둘의 차이점은 사용하는 목적의 차이가 있다.
자바에서 기본적으로 정렬이 가능한 모든 객체들은 Comparable 인터페이스를 구현하고 있다. Comparable 인터페이스를 구현하여 해당 객체들의 정렬 기준을 정의하고 있다. 이러한 Comparable 을 구현한 클래스들을 기존 정렬 기준과 다르게 정렬을 수행하고 싶을 때 사용하는 것이 Comparator 인터페이스이다.
Comparator 를 구현하여 만든 클래스를 객체들의 정렬시에 매개변수로 주는 등의 방식으로 Comparable 인터페이스로 구현한 기준이 아닌 Comparator 로 구현한 기준으로 정렬을 수행하도록 한다.
Comparable : 기본 정렬 기준을 구현하는데 사용 ex) 오름차순
Comparator : 기본 정렬 기준외에 다른 기준으로 정렬하고자할 때 사용
'프로그래밍언어 > JAVA' 카테고리의 다른 글
[JAVA] TreeMap (0) | 2022.02.04 |
---|---|
[JAVA] HashSet, TreeSet (0) | 2022.01.29 |
[JAVA] Arrays (0) | 2022.01.27 |
[JAVA] Iterator, ListIterator, Enumeration (0) | 2022.01.26 |
[JAVA] Stack, Queue (0) | 2022.01.24 |