자바에서는 배열이나 리스트의 정렬을 위해서 Comperator와 Comparable 인터페이스를 제공한다.
두 인터페이스는 모두 정렬을 하기 위해서 사용한다는것은 동일하다.
하지만 둘의 차이점은 아래와 같다.
Comparable
1. 기본 정렬 기준을 구현하는데 사용
2. 반드시 compareTo() 메소드를 정의해야 한다.
Comperator
1. 기본 정렬 기준 말고 다른 기준으로 정렬하고자 할때 사용
2. compare()메소드를 구현해야한다.
그럼 각각의 인터페이스에 대해서 자세히 알아보자.
Comperable
정렬 수행시 기본적으로 젹용되는 정렬기준이 되는 메소드를 정의하는 인터페이스이다.
Integer,Double 클래스 : 오름차순 정렬
String 클래스 : 사전순 정렬
구현 방법
정렬할 객체에 Comparable interface를 implement 한후
compareTo() 메소드를 오버라이딩하여 구현한다.
현재 객체 < 매개변수로 받은 객체 : 음수 리턴 -> 자리 바꿈 없음
현재객체 == 매개변수로 받은 객체 : 0 리턴 -> 자리 바꿈 없음
현재객체 > 파라미터로 넘어온 객체 : 양수 리턴 -> 서로 자리 바꿈
사용방법
Arrays.sort(array)
Collections.sort(list)
Arrays.sort와 Collections.sort의 차이는 Arrays.sort는 배열 형태를 매개변수로 받지만
Collections.sort() 같은 경우는 list를 받는다.
그래서 우리는 자바에서 기본적으로 제공해주는 오름차순 내림차순들을 사용할때는
Arrays.sort(array), Collections.sort(list) 등과 같은 방식을 써야한다.
Comperator
기본으로 제공해주는 정렬기준인 Comperable과는 다르게 정렬하고 싶을때 사용하는
인터페이스
구현 방법
Comperator 인터페이스를 implements 한후 compare메소드를 오버라이드 한다.
compare() 작성법
첫번째로 받은 매개변수 객체 < 두번째로 받은 매개변수 객체 : 음수 리턴 -> 자리바꿈 없음
첫번째로 받은 매개변수 객체 == 두번째로 받은 매개변수 객체 : 0 리턴 -> 자리바꿈 없음
첫번째로 받은 매개변수 객체 > 두번째로 받은 매개변수 객체 : 1 리턴 -> 서로 자리 바꿈 하게됨
사용 방법
Arrays.sort(array, 다른 정렬기준(Comperator implement 한 클래스))
Collections.sort(array, 다른 정렬기준(Comperator implement 한 클래스))
참조
https://gmlwjd9405.github.io/2018/09/06/java-comparable-and-comparator.html
https://www.youtube.com/watch?v=EW3Mub24wYg&t=819s
'코딩일기 > Java' 카테고리의 다른 글
[Java] 2차원 배열 정렬 방법 (0) | 2021.06.14 |
---|---|
[Java] Stack 클래스 사용방법 (0) | 2021.06.11 |
[Java] 배열 복사 하는 방법 ( clone(), copyOf(), copyOfRange() ) (0) | 2021.06.02 |
[Java] PriorityQueue(우선순위 큐) 설명과 사용법 (0) | 2021.05.28 |
[Java] 이클립스 디버깅 하는 방법 (0) | 2021.05.26 |