public interface Comparator {
int compare(Object o1, Object o2);
}
public interface Comparable {
public int CompareTo(Object o);
}
기본 정렬 기준을 구현할 때 사용한다.
기본 정렬 기준 외, 다른 기준으로 정렬할 때 사용한다.
package com.javaex.ch11;
import java.util.Arrays;
import java.util.Comparator;
public class ComparatorEx {
public static void main(String[] args) {
String[] strArr = {"cat", "Dog", "lion", "tiger"};
Arrays.sort(strArr); //String의 Comparable구현에 의한 정렬
System.out.println("strArr : " + Arrays.toString(strArr));
Arrays.sort(strArr, String.CASE_INSENSITIVE_ORDER); //대소문자 구분 X
System.out.println("strArr : " + Arrays.toString(strArr));
Arrays.sort(strArr, new Descending());
System.out.println("strArr : " + Arrays.toString(strArr));
}
}
class Descending implements Comparator {
@Override
public int compare(Object o1, Object o2) {
if(o1 instanceof Comparable && o2 instanceof Comparable) {
Comparable c1 = (Comparable) o1;
Comparable c2 = (Comparable) o2;
/* -1을 곱해서 역순으로 변경 */
//return c1.compareTo(c2) * -1;
//혹은 순서를 바꾼다.
return c2.compareTo(c1);
}
return -1;
}
}