[Kotlin Koans] Collection(1)

JJAE WON·2022년 5월 13일
0
post-thumbnail

Kotlin Koans 에서 Introduction 부분의 문제를 풀고 공부한 내용을 정리한 글 입니다.

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

2. Natural order

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

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

3. custum orders

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() 를 사용해서도 작성할 수 있다.

numbers.sortedWith(compareBy { it.length }) 이렇게 작성할 수 있다!

4. Reverse orders : reversed()

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

5. Random order : shuffled()

profile
안드왕 찐천재가 되고싶다.

0개의 댓글