[Java] Comparable_Comparator
by YoungHwan Kim
Compare()와 CompareTo()
- compare()와 compareTo()은 선언형태와 이름이 약간 다를뿐 두 객체를 비교한다는 같은 기능을 목적으로 고안된 것이다.
-
compareTo()의 반환값은 int이지만 실제로는 비교하는 두 객체가 같으면 0, 비교하는 값보다 작은면 음수, 크면 양 수를 반환한다.
- Comparable : 기본 정렬기준을 구현하는데 사용
- Comparator : 기본 정렬기준 외에 다른 기준으로 정렬하고자할 때 사용
예제1
- 참고로 알파벳 문자열은 기본 정렬 시 대문자 먼저정렬하고 소문자가 정렬된다.
import java.util.Arrays;
import java.util.Comparator;
public class compareTest02 {
public static void main(String[] args) {
String[] strArr = {"cat", "Dog", "lion", "tiger"};
System.out.println("11 :: " + Arrays.toString(strArr));
Arrays.sort(strArr);
System.out.println("22 :: " + Arrays.toString(strArr)); // 22 :: [Dog, cat, lion, tiger]
Arrays.sort(strArr, String.CASE_INSENSITIVE_ORDER); // 대소문자 구분안함
System.out.println("33 :: " + Arrays.toString(strArr)); // 33 :: [cat, Dog, lion, tiger]
Arrays.sort(strArr, new Decending()); // 역순정렬
System.out.println("44 :: " + Arrays.toString(strArr)); // 44 :: [tiger, lion, cat, Dog]
}
}
class Decending 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;
return c1.compareTo(c2) * -1;
}
return -1;
}
}
예제2
import java.util.Arrays;
import java.util.Comparator;
public class compareTest01 {
public static void main(String[] args) {
String[] str = {"3", "30", "34", "5", "9"};
Arrays.sort(str);
System.out.println(Arrays.toString(str)); // 문자 앞자리로 오름차순 정렬
System.out.println();
System.out.println();
Arrays.sort(str, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
//System.out.println(Arrays.toString(str));
//System.out.println(o1 + " + " + o2 + " ==> " + o1+o2 + " :: " + o2+o1);
return o2.compareTo(o1);
}
});
System.out.println("result ::: " + Arrays.toString(str)); // result ::: [9, 5, 34, 30, 3]
}
}
Subscribe via RSS