Comparable와 Comparator
- 요소를 특정 기준에 대한 내림차순 또는 오름차순으로 정렬하는 것
- 순서를 가지는 Collection(List 계열, SortedSet 자식 객체, SortedMap 자식 객체)들만 정렬 가능
구분 | Comparable | Comparator |
패키지 | java.lang.Comparable | java.util.Comparator |
형태 | interface | class |
사용법(메소드) | 인터페이스 implements 후 compareTo() 재정의 | 클래스 생성하여 내부에 compare()메소드 재정의 |
비교 | 나(자신)과 남(제2자) 비교, 클래스 자체에서 자동 정렬 | 제 3자가 2개 비교 |
정의 | 클래스의 기본 정렬 기준을 설정 | 기본 정렬 기준과는 다르게 사용자 정의 정렬 |
정렬 기준
- A < B 인 경우 음수 return
- A = B 인 경우 0 return
- A > B 인 경우 양수 return
CompareTo()
- 문자열 비교 (오름차순)
@Override
public int compareTo(Book b) {
return (this.name.compareTo(b.name));
}
- 숫자 비교 (내림차순)
@Override
public int compareTo(Book b){
if(this.id < b.id) return -1;
else if(this.id == b.id) return 0;
return 1;
}
- 숫자 비교 (오름차순)
@Override
public int compareTo(Book b){
return (this.id - b.id);
}
Compare()
Comparator<Book> com = new Comparator<Book>() {
@Override
public int compare(Book o1, Book o2) {
if(o1.level == o2.level) {
//level이 같으면 idx의 오름차순
return o1.idx - o2.idx;
}
//return o2.idx-o1.idx;
return o1.level - o2.level;
}
};
Arrays.sort(data, com);
'Java' 카테고리의 다른 글
Java 8과 Java 11의 차이 (0) | 2022.07.04 |
---|---|
Exception 클래스 개념 및 종류 (2) | 2021.08.22 |
입력받은 문자열에서 해당 문자열을 찾는 방법(String, StringTokenizer) (0) | 2021.08.15 |
StringTokenizer 클래스와 메소드 정리 (0) | 2021.08.14 |
StringBuffer, StringBuilder 클래스와 메소드 정리 (0) | 2021.08.14 |