forDevLife
[자바의정석] Chap 11. 컬렉션 프레임워크(Arrays / comparator / comparable) 본문
너무 어렵다. 아래는 최고의 정리 사이트이다.
요약하자면,
1) Arrays는 모두 static 메서드이다. 따라서 인스턴스 생성 없이 array.method_name으로 사용한다.
2) Arrays.sort()를 통해 배열을 정렬할 수 있다. 이 때 실제로는 sort에서 자동으로 comparator / comparable의 compare / compareTo를 호출하여 정렬한다.
3) comparable을 구현하려면, compareTo(Object o)를 오버라이딩 해야한다.
4) comparator를 구현하려면, compare(object o1, object o2)를 오버라이딩 해야한다.
5) comparable은 기본 정렬을 구현하는데 사용된다. 예를 들어 오름차순 / 내림차순이다.
6) comparator는 다른 기준으로 정렬하고자 할 때 사용된다. 예를 들어 학점이 같을 때 이름순으로 정렬 이런거?
7) compareTo / compare에서 리턴이 -1, 0이면 자리 유지, 1이면 자리 변경이다.
예를 들어 compare(a, b)에서
a < b : return -1
a == b : return 0
a > b : return 1
위와 같을 때, a < b 와 a == b 이면 자리가 유지되어 a, b 의 위치가 그대로 유지된다. 이는 오름차순이다.
8) main에서는 sort만 사용, 구현으로 오버라이딩 하는 부분에서 compare / compareTo를 작성하면 된다.
9) 보통 String / Integer 등은 compare / compareTo가 구현되어 있으므로 이를 활용하여 클래스를 구현한다.
10 comparator의 경우, 보통 익명 class로 구현한다. 책에서는 일반 클래스로 구현하였다.(comparator는 sort의 두번째 인자로 전달되므로, 한번만 사용되는 익명 class로 구현한다.)
https://m.blog.naver.com/occidere/220918234464
아래는 Arrays.sort와 collections.sort의 차이이다.
Arrays : 배열용 sort - quick sort 이용
Collections : List, set, Map등 Collection(Collections아님) 인터페이스 구현한 객체를 위한 sort - timsort 사용
https://devlog-wjdrbs96.tistory.com/68
'Java' 카테고리의 다른 글
[자바의정석] Chap 12. 열거형, 애너테이션 (0) | 2021.03.10 |
---|---|
[자바의정석] Chap 12. 지네릭스 (0) | 2021.02.26 |
[자바의정석] Chap 11. 컬렉션 프레임워크(스택, 큐) (0) | 2021.01.29 |
[자바의정석] Chap 7. 객체지향 프로그래밍 (내부 클래스) (0) | 2021.01.06 |
[자바의정석] Chap 7. 객체지향 프로그래밍4 (0) | 2020.12.28 |