-
Java: Comparable(compareTo())와 Comparator(compare())의 차이점Java 2022. 5. 17. 14:32
Java: Comparable(compareTo())와 Comparator(compare())의 차이점
오버라이딩과 오버로딩을 헷갈려하던 시절처럼
나란 녀석은 Comparable과 Comparator / compareTo()와 compare()를 계속 헷갈려하는 것이다...
더이상의 뇌절 방지를 위해서 한번 정리해보았다. 이제 그만 헷갈려줘 제발...
Comparable과 Comparator는 인터페이스다. 각각
compareTo(T o), compare(T o1, T o2)
메서드를 갖고 있다.compareTo
와compare
는 둘 다 비교한다.그 중 먼저
compareTo()
는 자신과 비교값을 비교한다cls1.compareTo(cls2);
이런식으로 말이다. 객체를 단순히 등호연산자로 비교할 수는 없는 것이기 때문에, Comparable을 구현하는 부분(오버라이드)에서 무엇을 가지고 구분할 건지, compareTo() 메소드 안에 로직을 구현해주어야 한다.
@Override public int compareTo(Cls cls) { if (this.number > cls.number) return 1; // 비교주체가 더 크면 양수 else if (this.number == cls.number) return 0; // 같으면 0 else return -1; // 비교값이 더 크면 음수 }
compare()
는 두 매개변수를 비교한다. 비교 방식은 비슷하다.@Override public int compare(Cls o1, Cls o2) { if (o1.number > o2.number) return 1; // 첫번째 인자가 두번째 인자보다 크면 양수 else if (o1.number == o2.number) return 0; // 같으면 0 else (o1.number < o2.number) return -1; // 두번째 인자가 첫번째 인자보다 크면 음수 }
'Java' 카테고리의 다른 글
Java: Arrays.fill()과 Arrays.setAll()의 차이 (1) 2022.07.12 Java: 오류Error와 예외Exception, Unchecked와 Checked (0) 2022.06.17 Java: Integer.parseInt()와 Integer.valueOf()의 차이점 구분 (2) 2022.06.06 Java: String[] split(regex, limit) 사용 예시 (0) 2022.05.17 생각: Java에는 왜 const(상수)가 없을까? (2) 2022.03.05 테스트 시 에러: org.junit.platform.launcher.core.EngineDiscoveryOrchestrator... (0) 2022.03.02