compareTo 단순 동치성 비교 + 순서 비교 + 제너릭
//Comparable을 구현한 객체들의 배열은 다음처럼 손쉽게 정렬할 수 있다.
Arrays.sort(a);
public class WordList
{
putlic static void main(String[] args)
{
Set<String> s = new TreeSet<>();
Collections.addAll(s, args);
System.out.println(s);
}
알파벳, 숫자, 연대 같이 순서가 명확한 값 클래스를 작성한다면 반드시 Comparable
인터페이스를 구현하자.
타입이 다른 객체가 주어지면 ClassCastException
을 던지면 된다.
정렬된 컬렉션 : Treeset, TreeMap
유틸리티 컬렉션 : Collection, Arrays
기본 타입 필드가 여럿일 때의 비교자
public int compareTo(PhoneNumber pn)
{
int result = Short.compare(areaCode, pn.areaCode);
if (result == 0)
{
result = Short.compare(prefix, pn.prefix);
if (result == 0)
result = Short,ciomp(lineNum, pn.lineNum);
}
return result;
비교자 생성 메서드를 활용한 비교자 (속도 둔화)
private static final Comparator(PhoneNumber> COMPARATOR = comparingInt(PhoneNumber pn) -> pn.areaCode)
.thenComparingInt(pn ->prefix)
.thenComparingInt(pn -> lineNum);
public int comapreTo(PhoneNumber pn){
return COMPARATOR.compare(this, pn);
& 연산자는 쓰지 말아야 한다. 그 대신 박싱된 기본 타입 클래스가 제공하는 정적 compare 메서드나 Comparator 인터페이스가 제공하는 비교자 생성 메서드를 사용