출처: https://st-lab.tistory.com/243
이 분 이해가 잘 되게 매우 잘 썼다.
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를 오버라이딩 해야 정렬할 기준을 세운다.
'java > 자바' 카테고리의 다른 글
[chap18] 람다식 (0) | 2022.11.27 |
---|---|
[Chap17] - Map의 공통특성 (HashMap, HashTable, LinkedHashMap) (0) | 2022.11.20 |
[Chap17] - Set(HashSet, LinkedHashSet, TreeSet) (0) | 2022.11.13 |
[Chap17] 컬렉션 List (ArrayList, Vector, LinkedList) (0) | 2022.11.07 |
Ch16 제네릭 (0) | 2022.10.30 |