Comparator, Comparable
: 컬렉션을 정렬하는데 필요한 메서드를 정의한 인터페이스, 두 객체를 비교할 수 있는 메소드를 갖고 있다.
* Comparable
컬렉션이 기본으로 갖고 있는 정렬기준을 구현하는데 사용.
Integer와 같은 wrapper클래스와 String, Date, File과 같은 클래스에서 구현하고 있다.
import java.util.*;
class ComparatorEx {
public static void main(String[] args){
String[] strArr = {"cat", "Dog", "lion", "tiger"};
Arrays.sort(strArr); // String의 기본정렬
System.out.println("strArr="+Arrays.toString(strArr));
// 실행결과 : strArr=[Dog, cat, lion, tiger]
Arrays.sort(strArr, String.CASE_INSENSITIVE_ORDER); // 대소문자 구분안함
System.out.println("strArr="+Arrays.toString(strArr));
// 실행결과 : strArr=[cat, Dog, lion, tiger]
}
}
* Comparator
컬렉션이 기본으로 갖고 있는 정렬기준 외에 다른 기준으로 정렬하고자 할 때 사용.
import java.util.*;
class ComparatorEx {
public static void main(String[] args){
String[] strArr = {"cat", "Dog", "lion", "tiger"};
Arrays.sort(strArr, new Descending()); // 역순 정렬
System.out.println("strArr="+Arrays.toString(strArr));
// 실행결과 : strArr=[tiger lion, cat, Dog]
}
}
class Descending implements Comparator {
public int compare(Objet o1, Object o2){
if(o1 instanceof Comparable && o2 instanceof Comparable){
Comparable c1 = (Comparable)o1;
Comparable c2 = (Comparable)o2;
return c1.compareTo(c2) * -1; //-1을 곱해서 기본정렬방식의 역으로 변경한다.
}
return -1;
}
}
728x90
반응형
'개발 공부 > Java & Spring' 카테고리의 다른 글
15. 이진 검색 트리와 TreeSet (0) | 2023.01.17 |
---|---|
14.HashSet (0) | 2023.01.16 |
12. java.time 패키지 파싱과 포맷 (1) | 2022.12.28 |
11. java.time 패키지 (0) | 2022.12.28 |
10. 래퍼 클래스(wrapper 클래스) (0) | 2022.12.07 |