2024. 8. 2. 23:48ㆍJAVA/복습
순회에 Iteratable 과 Iterator 인터페이스가 있다면,
정렬에는 Comparatable, Comparator 인터페이스가 있다.
Comparatable
public interface Comparable<T> {
public int compareTo(T o);
}
Comparatable은 말 그대로 '비교 가능한(비교 가능하게 해주는)' 인터페이스 이다.
compareTo(T o); 메서드를 통해 자기 자신과 타겟의 값을 비교한다.
배열을 사용한 자료 구조에서,
Arrays.sort() 메서드 사용 시, 자료구조에 담긴 객체들을 비교하여 정렬해준다.
정렬된 순서는 1회용이 아니며, GC 처리될 때까지 유지된다.
Collections.sort()
배열을 보다, 쉽게 사용할 수 있게 해주는 Collection 을 위한 유틸 Collections 에서도 정렬을 위한 기능을 제공한다.
Arrays.sort(array, CustomComparator);
Collection.sort(null);
Collection.sort(Collection 자료구조, CustomComparator);
list.sort();
정렬을 위한 조건
Comparatable 혹은 Comparator 구현 필요
Integer, String 과 같은 자바에서 기본적으로 제공해주는 래퍼 클래스에는 Comparatable 이 구현 돼 있다.
기본적인 정렬을 보장해주고 있는 것이다.
다만, User, StopLine 과 같이 직접 만든 클래스 객체를 비교하고 싶다면, 클래스에 Comparatable 를 구현해야 한다.
기본적으로, 오름차순 정렬(자연 정렬) 되게끔 구현 돼 있고, 그 외 추가 정렬 기준이 필요하다면, Comparator 인터페이스를 구현한 커스텀 Comparator 를 개발해야 한다.
TreeSet
이전에도 몇 번 읇었던 바와 같이, TreeSet은 이진 구조를 띈다.
이러한 구조를 띄게 하기 위해선 left, right 를 구분할 수 있도록 해야한다.
구분을 위해서는. 기준이 필요하며, 그 기준은 정렬 기준이다.
따라서, TreeSet에 저장할 객체는 반드시 comapratable 이나 comparator 이 구현 돼야 한다.
'JAVA > 복습' 카테고리의 다른 글
| Collections 유틸 (0) | 2024.08.03 |
|---|---|
| 순회 - Iterable, Iterator (0) | 2024.08.02 |
| Map (0) | 2024.08.02 |
| Set 인터페이스 (1) | 2024.08.01 |
| Set - HashSet (0) | 2024.07.31 |