개발/자바
[JAVA] Comparable, Comparator 정복하기
공상과학소설
2020. 7. 31. 20:27
반응형
자바에서는 정렬을 sort() 메서드로 할 수 있다.
하지만 이 메소드는 기본적인 정렬만 가능하고,
좀 더 자세한 조건을 건 정렬을 하고 싶을 때,
Comparable과 Comparator을 사용한다.
두 개를 사용하면서 무엇이 차이가 있는지 몰랐는데
이번 기회를 통해 이 두 개를 정복하도록 하자.
Interface Comparable
- 정렬 수행 시 기본적으로 적용되는 정렬 기준이 되는 메서드를 정의하는 인터페이스
- Java에서 기본적으로 제공되는 Integer나 String 같은 클래스들도 모두 Comparable 인터페이스를 구현하고 있다. (Integer : 오름차순, String : 사전 순 정렬)
구현 방법
- 정렬하고 싶은 객체에 Comparable를 implements 시키고, compareTo() 메서드를 오버라이드 해서 정렬하고 싶은 조건을 작성해준다.
구현 코드
class Square implements Comparable<Square>{
int height,width;
@Override
public int compareTo(Square o) {
if(this.width>o.width) {
return 1; // width에 대해서 오름차순이다.
}else {
return -1;
}
}
}
Interface Comparator
- 정렬 가능한 클래스들의 기본 정렬기준과 다르게 정렬하고 싶을 때 사용하는 인터페이스.
- 기본 정렬기준인 오름차순 정렬을 내림차순 정렬로 바꿀 때 많이 사용된다.
구현 방법
- 정렬하고 싶은 객체에 Comparator 를 implements 해주고 compare() 메서드를 오버라이드 한다.
구현 코드
class Square implements Comparator<Square> {
int height, width;
@Override
public int compare(Square o1, Square o2) {
return Integer.compare(o2.width, o1.width); // width 내림차순 정렬
}
}
두 가지의 정렬 인터페이스에 대해서 공부할 수 있는 기회를 가졌다.
확실한 이해를 하고 넘어가도록 하자.
반응형