본문 바로가기

알고리즘

Comparator<T> 인터페이스 - 정렬문제에서 자주 쓰이는 기법

Comparator<T> 인터페이스 이용

만약 알파벳의 사전편찬 순이라던가 숫자 오름차순 같이 natural order 대로의 정렬 말고용자가 원하는 임의의 정렬 기준(가령 이름의 문자열 길이 순서)대로 정렬하고 싶으면 어떻게 해야할까? 이럴땐 정렬이 되는 기준을 개발자가 직접 정의해주어야 한다. 이때 기준이 되는 것이 Comparator 인터페이스를 구현하는 것이다. 즉, compare() 메소드를 오버라이딩 해주는 것이다.

 

 

Comparator 인터페이스는 compare() 메소드와 equals() 메소드 두 가지를 갖고 있지만 사실 이를 구현 하는 모든 클래스는 Object클래스를 상속한다. 그런데 Object클래스에서 equals() 메소드를 구현하고 있기 때문에, Comparator 인터페이스를 구현할 때 equals 메소드는 저절로 구현한게 되버리기 때문에 compare()메소드만 오버라이딩 해주면된다.

String 클래스는 Comparable 인터페이스를 구현하고 있기 때문에 compareTo 메소드를 바로 쓸 수 있다.

(Comparable 인터페이스는 compareTo() 메소드를 가지고 있음)

 

 

즉, 자바에서 여러가지 조건을 동시에 만족하는 정렬을 사용할때에도 Comparator를 이용해서 정렬을 사용하면 된다.

 

 


[ 참고 예제 ]

https://rimkongs.tistory.com/185

 

[프로그래머스][정렬문제][Level2] - 가장 큰 수

문제 바로가기 Comparator 인터페이스가 이용됐다. -> Comparator 인터페이스에 대해 좀 더 자세히 알고 싶다면 여기를 참고하자. import java.util.Arrays; import java.util.Comparator; class Solution { publi..

rimkongs.tistory.com

https://sundries-in-myidea.tistory.com/11

 

[백준 -1181번] 단어정렬 - JAVA 정리 및 해설

안녕하세요. 오늘은 단어 정렬과 그 속에 체크할 점을 짚고 넘어가겠습니다. 단어정렬 이문제는 그렇게 어려운 문제는 아닙니다. 기본적으로 정렬이라는 간단한 알고리즘을 통해서 문제를 풀어 내면 됩니다. 문제..

sundries-in-myidea.tistory.com

 

 

문제의 정렬 조건은

  1. 길이가 짧은 것부터
  2. 길이가 같으면 사전 순으로
  3. 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력

 

 

 

 

 

 

참조

-JAVA API Document

-https://sundries-in-myidea.tistory.com/11

'알고리즘' 카테고리의 다른 글

[개념] 버블정렬, 선택정렬  (0) 2020.01.13
[개념] 피보나치 수열 알고리즘  (0) 2020.01.10
[개념] KMP 알고리즘  (0) 2020.01.04
백준 1052. 물병 (C++)  (0) 2019.12.26
[자료구조] 우선순위 큐 (Priority Queue)  (0) 2019.12.24