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

ghuhan18님의 프로필 이미지
ghuhan18

작성한 질문수

김영한의 실전 자바 - 중급 2편

정렬2 - Comparable, Comparator

comparable, comparator

작성

·

70

0

얼핏 봤을때에는 comparable 과 comparator 차이가 크게 없어 보이는데, 만약 String ID 알파벳 순이라 아니라

String Id 의 length 순으로 정렬해서 배열을 만들고 싶다고 했을때에는 comparable 은 기본적인 자연적인 배열 순서로 정의를 해주기 때문에 comparator 를 쓰는게 올바른 것인가요 ?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

ghuhan18님께서는 ComparableComparator의 차이와 특히, 단순히 알파벳 순이 아닌 문자열 길이에 따라 정렬하고 싶을 때 Comparator를 사용하는 것이 올바른지에 대해 질문하셨습니다.

우선, Comparable 인터페이스는 객체 자체에 정렬 메커니즘을 내장시켜 자연적인 순서로 정렬하기 위해 사용됩니다. 반면, Comparator 인터페이스는 별도의 정렬 기준을 설정할 때 사용되며, 정렬 방식을 객체 외부에서 정의하고 싶을 때 유용합니다.

따라서 String ID의 알파벳 순서가 아닌 길이 순으로 정렬하고 싶을 때는, 기본적인 자연적인 배열 순서로 정의하는 Comparable보다는 정렬 기준을 외부에서 제공하는 Comparator를 활용하는 것이 맞습니다. Comparator를 사용하면 정렬 기준을 유연하게 바꿀 수 있어, 위와 같은 요구 사항에 적합합니다.

이와 관련한 논의는 기존 답변에서 찾아보실 수 있습니다:
- “Comparable이 아닌 Comparator를 사용하는 경우”에서는 기본 정렬 외 다른 정렬 방법을 사용해야 하는 경우 Comparator를 사용하는 예시에 대해 설명하고 있습니다. 이는 Comparable 인터페이스를 사용하는 대신 Comparator 인터페이스를 사용하여 다양한 정렬 기준을 적용하는 방법에 대한 좋은 사례를 제공합니다.

따라서, ghuhan18님의 질문에 답변이라면, 예시의 상황에서 Comparator를 사용하는 것이 올바른 접근 방식입니다. 문자열의 길이로 배열을 정렬하고자 하는 경우, Comparator를 구현하여 정렬 로직을 직접 정의할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

ghuhan18님의 프로필 이미지
ghuhan18

작성한 질문수

질문하기