[Java] Comparable vs Comparator

김형진·2023년 7월 5일
0

Comparable의 장단점 및 사용 상황

장점

  1. 클래스의 '자연스러운 순서'를 정의하는 데 적합하다.
  2. 클래스 자체에 compareTo() 메서드를 구현하므로 추가적인 클래스나 익명 함수 없이도 Collections.sort()를 사용하여 객체를 정렬할 수 있다.

단점

  1. 한 클래스에는 하나의 '자연스러운 순서'만 정의할 수 있다. 즉, 다양한 기준으로 정렬하려면 별도의 Comparator 객체를 사용해야 한다.
  2. Comparable을 구현하려면 원래의 클래스를 수정해야 하므로, 이미 작성된 클래스나 외부 라이브러리의 클래스를 정렬하려면 Comparator를 사용해야 한다.

사용 상황

  1. 해당 클래스의 객체들이 자연스럽게 비교될 수 있고 정렬될 수 있는 경우(예: 숫자, 문자열 등)

Comparator의 장단점 및 사용 상황

장점

  1. Comparator는 다양한 정렬 기준을 정의할 수 있어 유연성이 뛰어나다.
  2. 원래의 클래스를 수정하지 않고도 객체를 정렬할 수 있으므로, 외부 라이브러리의 클래스나 수정이 불가능한 클래스를 정렬하는 데 적합하다.

단점

  1. 정렬을 하기 위해 Comparator를 알고 있어야 한다.

사용 상황

  1. 객체를 여러 가지 방식으로 정렬해야 할 때(예: 때때로 나이 순으로, 때때로 이름 순으로 사람을 정렬해야 할 때)
  2. 원래의 클래스를 수정할 수 없는 경우
profile
히히

0개의 댓글