본문 바로가기

java/자바

Comparable 과 Comparator의 이해

출처: https://st-lab.tistory.com/243

 

자바 [JAVA] - Comparable 과 Comparator의 이해

아마 이 글을 찾아 오신 분들 대개는 Comparable과 Comparator의 차이가 무엇인지 모르거나 궁금해서 찾아오셨을 것이다. 사실 알고보면 두 개는 그렇게 어렵지 않으나 아무래도 자바를 학습하면서 객

st-lab.tistory.com

이 분 이해가 잘 되게 매우 잘 썼다.

 

comparable, comparator 둘 다 인터페이스다 ==> 구현해야 사용 가능. 상속 가능

 

객체를 비교하고싶으면 이 인터페이스를 클래스에서 상속 받으면 

객체안에 있는 키워들 중에서 한개를 지정해서 비교가 가능해진다.

 

comparable comparator
compareTo(객체 1) compare(객체1, 객체2)
자기 자신과 매개변수 객체 비교함 두개의 매개변수를 비교함
   

 

이 블로그에서 기분이 좋은 부분은

1) -1, 0, 1 을 리턴할 때 기준점의 제시

2) 다른 언어에서도 정렬할때 마찬가지로 a-b, b-a;를  왜 리턴으로 사용하는지 깨닫게 해주었다.

 

퍼왔다

 

나를 기준으로 비교대상이 작으면 :: 양수
나를 기준으로 비교대상이면 :: 음수

나비작양

나비크음

 

 

 

 

 

 

a.compareTo(b); // 나이 기준
a객체 기준 - b객체 나이 ==  17 -18 == 
-1 == 음수
a.compare(b,c); //클래스넘버 기준
b객체 - c객체 == 1 - 3 == -2 == 음수

 

오 객체들끼리 비교때는 comparator을 사용한다!!! 자기 동일한 타입의 자신의 객체와 어떤 객체를 비교하고자 하면
Comparable을 익명객체로 선언한다고 한들,
동일한 타입 비교는 불가능하다.

비교 때 거의 안쓰이겠구먼...
아니면 기준점을 두고서는 비교하는 상황에서는 쓰일 수 있겠다.

 

 

실제 자바에서 비교를 사용하는 메소드

 

 

 

 

 

정렬

객체는 정렬을 못한다

그래서 comparable을 상속받아서 compareTo를 오버라이딩 해야 정렬할 기준을 세운다.