일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 안드로이드 API
- python3
- Java
- 필답고사
- RecyclerView
- kotlin
- Android 컴파일
- FragmentStateAdapter
- 수리통계
- Kotiln
- okHttp
- REST API
- Devexpress
- 셀레니움
- ViewModel
- 백준 15686
- Android
- 데이터바인딩
- ViewPager2
- Clean Architecture
- gson
- TabLayout
- github api
- 안드로이드 플랫폼
- TODO
- 웹 크롤링
- LRU
- 통계대학원
- RETROFIT
- AndroidX
- Today
- Total
그냥 가끔의 기록장
1. Comparable 본문
클래스의 인스턴스를 비교하는 방법으로 자바에서는 Comparable 인터페이스가 compareTo() 함수를 제공한다. 코틀린에서는 이걸 Comparable 인터페이스로 제공하고, 함수 extension도 가능하다.
Function
1. compareTo()
abstract operator fun compareTo(other: T): Int
호출 객체와 전달된 객체(passed object)를 비교하는 함수로, 둘이 같으면 0을, 전달된 객체 (passed object)가 더 크면 음수를, 전달된 객체가 더 작으면 양수를 반환한다.
Extension Function
1. coerceAtLeast
fun <T : Comparable> T.coerceAtLeast(minimumValue: T): T
호출된 객체가 특정 개체보다 큰지 아닌지를 확인해준다. 호출된 객체가 더 크면 객체 자체를 반환하고 그렇지 않으면 최소 객체를 반환한다.
2. coerceAtMost
fun <T : Comparable> T.coerceAtMost(maximumValue: T): T
호출된 객체가 특정 개체보다 작은지 아닌지를 확인해준다. 호출된 객체가 더 작으면 객체 자체를 반환하고 그렇지 않으면 최대 객체를 반환한다. (coercAtLeast랑 반대)
3. coerceIn
fun <T : Comparable> T.coerceIn(
minimumValue: T?,
maximumValue: T?
): T
호출된 객체가 특정 최소값과 최대값 사이, 범위 내에 있는지 여부를 판단한다. 범위 내에 있으면 객체를 반환하고, 범위내에 없으면서 객체가 최소값보다 작으면 최소값을 반환하고, 범위내에 없으면서 최대값보다 크면 최대값을 반환한다.
4. rangeTo
fun main(args : Array<String>) {
val range = 1..1000
println(range)
println("Is 55 within the range? ${55 in range}") // true
println("Is 100000 within the range? ${100000 in range}") // false
}
위와 같이 rangeTo함수는 값이 범위내에 있으면 true를, 없으면 false를 반환한다.
코드에서 Comparable <T>를 쓰다 둘다 뭔지 제대로 모르는거 같아 정리를 하려했는데..Comparable은 대강 비교하는 함수, 인터페이스라는건 알겠지만 T는 제네릭과 관련되어 매우 매우 매우 내용이 어렵고 길다는 점을 깨달았다. 따라서 제네릭을 다음에 다시 정리하는걸로 다짐..!
Reference
https://www.geeksforgeeks.org/comparable-interface-in-kotlin/
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-comparable/