Comparable, Comparator 모두 자바에서 정렬을 할 때 사용하고 있습니다. 하지만 이 2가지는 명확한 차이가 존재합니다.
2가지 모두 정렬할 때 비교해 객체의 순서를 결정하는 역할을 합니다. 이 2가지 인터페이스를 사용하면 Collections.binary.Search, Collections.binarySearch, Collections.max, Collections.min, Collections.sort, Arrays.binarySearch, Arrays.sort같은 순서를 결정하는 메소드를 사용할 수 있습니다.
결론적으로 Comparable과 Comparator의 차이는 다음과 같습니다.
* Comparable - 기준을 설정하고 정렬. 즉, 특정한 기준 1가지를 가지고 정렬 Ex) 학점을 기준으로 오름차순 or 내림차순
* Comparator - Comparable과 다르게 요구사항에서 주어진 특정 기준을 가지고 정렬 Ex) 학점이 같다면 이름순으로 정렬
그럼 Comparable과 Comparator의 2가지 차이점을 알아보겠습니다.
- Comparable
Comparable은 compareTo 메서드를 오버라이드 합니다.
Comparable을 구현한 클래스는 기본적으로 오름차순을 기준으로 정렬을 수행합니다. 또한 1가지 기준점을 가지고 그에 대해 정렬을 하고 싶을 때 사용합니다.
- Comparator
Comparator는 compare 메서드를 오버라이드 합니다.
Comparator를 구현한 클래스는 일반적인 정렬기준을 넘어 사용자 정의 조건을 규칙으로 정렬을 하고 싶을 때 사용합니다.
정리하면 Comparable은 기본적인 정렬위주일 때 사용하고 특정한 규칙을 사용해 정렬을 하고 싶을 때는 Comparator를 사용하면 됩니다.
'Java' 카테고리의 다른 글
[JAVA] Pattern과 Matcher(정규표현식) (0) | 2020.07.01 |
---|---|
[JAVA] 웹 크롤링 - Jsoup을 사용한 실시간 데이터 수집 (0) | 2020.06.16 |
[Java] toString()과 String.valueOf()의 차이점 (4) | 2019.04.23 |
[Java] 람다표현식 기초 (JAVA 8) (0) | 2019.01.28 |
[Java] Stop-the-world (0) | 2019.01.08 |