Oedering*(순서)

순서는 컬렉션의 중요한 요소이다. Kotlin에서 객체의 순서는 여러가지 방법으로 정의할 수 있다.

1. Comparable

비교하여 순서를 정하는 것.

숫자는 우리가 알고있는 방법 그대로 사용한다. 1>0 , -3.4f > -5f

char 이나 String 의 경우 사전식 순서를 따른다. a < b, world < hello

class Version(val major: Int, val minor: Int): Comparable<Version> {
    override fun compareTo(other: Version): Int = when {
        this.major != other.major -> this.major compareTo other.major // compareTo() in the infix form 
        this.minor != other.minor -> this.minor compareTo other.minor
        else -> 0
    }
}

fun main() {    
    println(Version(1, 2) > Version(1, 3))
    println(Version(2, 0) > Version(1, 5))
}
false
true

<aside> 🧺 새로운 배열 생성이 아니라 자체에 바로 저장하고 싶으면 ed를 빼준다. ex) sort()

</aside>

sorted(),sortedDescending()

val numbers = listOf("one", "two", "three", "four")

println("Sorted ascending: ${numbers.sorted()}")
println("Sorted descending: ${numbers.sortedDescending()}")

sortedBy{} , sortedByDescending { } : 한개의 조건이 붙을 때

val numbers = listOf("one", "two", "three", "four")

val sortedNumbers = numbers.sortedBy { it.length }
println("Sorted by length ascending: $sortedNumbers")
val sortedByLast = numbers.sortedByDescending { it.last() }
println("Sorted by the last letter descending: $sortedByLast")
결과
Sorted by length ascending: [one, two, four, three]
Sorted by the last letter descending: [four, two, one, three]

위에서 길이에 따라 정렬하는 문인 numbers.sortedBy { it.length }sortedWith() 를 사용해서도 작성할 수 있다.