강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

임다정님의 프로필 이미지
임다정

작성한 질문수

Comparable, Comparator의 차이

작성

·

101

0

두개의 차이를 모르겠습니다.어쩔때 comparable을 써야하고 어쩔떄는 Comparator를 써야하는지 잘모르겠습니다

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 임다정님의 질문에 대해 답변드리겠습니다.

Comparable과 Comparator는 Java에서 객체를 정렬할 때 사용되는 인터페이스입니다. 각각의 사용 시기와 목적에 따라 차이가 있습니다.

  1. Comparable: java.lang.Comparable 인터페이스는 객체의 자연 순서를 정의하는 데 사용됩니다. 클래스 내부에 구현되며, compareTo(Object o) 메서드를 오버라이드해서 사용합니다. 클래스의 기본 정렬 기준을 설정하고 싶을 때 사용합니다. 예를 들어, 특정 객체 리스트를 정렬하고자 할 때 해당 객체 클래스에서 Comparable을 구현하여 compareTo 메서드를 통해 정렬 로직을 정의할 수 있습니다.

  2. Comparator: java.util.Comparator 인터페이스는 외부에서 객체의 정렬 방법을 정의할 때 사용됩니다. compare(Object o1, Object o2) 메서드를 구현하여 사용하며, 이를 정렬 로직으로 사용하여 Collections.sort() 등에 전달하여 사용할 수 있습니다. 해당 인터페이스는 클래스의 기본 정렬 기준과는 별도로 특정 정렬 방식을 정의하고 싶을 때 유용합니다. 예를 들어, 같은 객체 리스트를 여러 기준으로 정렬해야 할 경우 Comparator를 사용하여 다양한 정렬 기준을 적용할 수 있습니다.

쓰임새:
- Comparable은 해당 객체의 기본 정렬 기준을 내부적으로 정의하고자 할 때 사용합니다.
- Comparator는 기본 정렬 기준 외에 다른 기준으로 정렬하고자 할 때, 또는 정렬 가능한 객체가 아닌 경우에 사용합니다.

정리하자면, 객체의 자연적인 순서를 정의하고 싶을 때는 Comparable을 구현하고, 커스텀 정렬 로직이 필요하거나 여러 다른 정렬 기준을 적용하고 싶을 때는 Comparator를 사용합니다.

임다정님의 프로필 이미지
임다정

작성한 질문수

질문하기