작성
·
101
0
두개의 차이를 모르겠습니다.어쩔때 comparable을 써야하고 어쩔떄는 Comparator를 써야하는지 잘모르겠습니다
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 임다정님의 질문에 대해 답변드리겠습니다.
Comparable과 Comparator는 Java에서 객체를 정렬할 때 사용되는 인터페이스입니다. 각각의 사용 시기와 목적에 따라 차이가 있습니다.
Comparable: java.lang.Comparable
인터페이스는 객체의 자연 순서를 정의하는 데 사용됩니다. 클래스 내부에 구현되며, compareTo(Object o)
메서드를 오버라이드해서 사용합니다. 클래스의 기본 정렬 기준을 설정하고 싶을 때 사용합니다. 예를 들어, 특정 객체 리스트를 정렬하고자 할 때 해당 객체 클래스에서 Comparable을 구현하여 compareTo
메서드를 통해 정렬 로직을 정의할 수 있습니다.
Comparator: java.util.Comparator
인터페이스는 외부에서 객체의 정렬 방법을 정의할 때 사용됩니다. compare(Object o1, Object o2)
메서드를 구현하여 사용하며, 이를 정렬 로직으로 사용하여 Collections.sort() 등에 전달하여 사용할 수 있습니다. 해당 인터페이스는 클래스의 기본 정렬 기준과는 별도로 특정 정렬 방식을 정의하고 싶을 때 유용합니다. 예를 들어, 같은 객체 리스트를 여러 기준으로 정렬해야 할 경우 Comparator를 사용하여 다양한 정렬 기준을 적용할 수 있습니다.
쓰임새:
- Comparable은 해당 객체의 기본 정렬 기준을 내부적으로 정의하고자 할 때 사용합니다.
- Comparator는 기본 정렬 기준 외에 다른 기준으로 정렬하고자 할 때, 또는 정렬 가능한 객체가 아닌 경우에 사용합니다.
정리하자면, 객체의 자연적인 순서를 정의하고 싶을 때는 Comparable을 구현하고, 커스텀 정렬 로직이 필요하거나 여러 다른 정렬 기준을 적용하고 싶을 때는 Comparator를 사용합니다.