Comparable
(비교의 대상) : 자신과 다른 객체를 비교
Date
, BigDecimal
, BigInteger
등Comparator
(비교의 주체) : 주어진 두 객체를 비교
Arrays
의 정렬 메소드, TreeSet
이나 TreeMap
등의 생성자에 활용📁 ex01
☕ Main.java
Integer int1 = Integer.valueOf(1);
Integer int2 = Integer.valueOf(2);
Integer int3 = Integer.valueOf(3);
// 대상보다 작을 때: -1, 같을 때 0, 클 때: 1
int _1_comp_3 = int1.compareTo(3);
int _2_comp_1 = int2.compareTo(1);
int _3_comp_3 = int3.compareTo(3);
int _t_comp_f = Boolean.valueOf(true).compareTo(Boolean.valueOf(false));
int _abc_comp_def = "ABC".compareTo("DEF");
int _def_comp_abc = "efgh".compareTo("abcd");
Integer[] nums = {3, 8, 1, 7, 4, 9, 2, 6, 5};
String[] strs = {
"Fox", "Banana", "Elephant", "Car", "Apple", "Game", "Dice"
};
// ⭐️ Arrays 클래스의 sort 메소드
// - 기본적으로 compareTo에 의거하여 정렬
// - 인자가 없는 생성자로 생성된 TreeSet, TreeMap도 마찬가지
Arrays.sort(nums);
Arrays.sort(strs);
☕ IntDescComp.java
public class IntDescComp implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
}
☕ Main.java
Arrays.sort(nums, new IntDescComp());
☕ CloseToInt.java
public class CloseToInt implements Comparator<Integer> {
int closeTo;
public CloseToInt(int closeTo) {
this.closeTo = closeTo;
}
@Override
public int compare(Integer o1, Integer o2) {
return (Math.abs(o1 - closeTo) - Math.abs(o2 - closeTo));
}
}
☕ Main.java
Arrays.sort(nums, new CloseToInt(5));