반응형
이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서
Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다.
#
compareTo 는 Any 에 속해있는 녀석이 아니다.
해당 함수 호출이 필요할 경우 Comparable interface 를 구현해야 한다.
#
compareTo 는 다음과 같은 특정을 가져야 한다.
- Antisymmetric. ( a>=b & b>=a 이면 a==b)
- Transitive. (a>=b & b>=c 이면 a>=c)
- Connex. 모든 2개 이상의 element 들이 관계를 가져야만 한다.
Do we need a compareTo?
#
Kotlin 에서는 compareBy 등의 함수가 지원되기 때문에 직접 compareTo 등을 구현할 일이 거의 없다.
Implementing compareTo
#
compareValues, compareValuesBy 등의 함수를 통해 쉽게 비교할 수 있다.
#
직접 구현할 경우 아래 규칙을 따르자.
- 둘이 동일할 때에는 0 return
- receiver 가 other 보다 더 크면 양수 return
- receiver 가 other 보다 작을 경우 음수 return
그리고 antisymmetric, transitive, connex 가 지켜지는지 확인해보자.
끝
반응형
댓글