코틀린에서는 다양한 내장 함수를 제공하여 개발자가 더 쉽게 작업할 수 있도록 돕는다. 여기서는 몇 가지 유용한 코틀린 함수들을 살펴보겠다. 자바를 사용하다가 코틀린을 처음 접하는 개발자에게도 이해하기 쉽도록 설명하겠다.
배열을 특정 범위만큼 자르고, 자른 뒤 리스트를 반환하는 함수이다.
val arr = arrayOf(1, 2, 3, 4, 5)
println(arr.slice(1..3))
// 결과: [2, 3, 4]
기본적으로 사용할 수 있는 정렬 함수이다. 컬렉션에 대해서 사용된다.
val list = listOf(5, 2, 9, 1, 5, 6)
val sortedList = list.sorted()
println(sortedList)
// 결과: [1, 2, 5, 5, 6, 9]
내림차순 정렬을 지원하는 함수이다. 컬렉션에 대해서 사용된다.
val list = listOf(5, 2, 9, 1, 5, 6)
val sortedDescList = list.sortedDescending()
println(sortedDescList)
// 결과: [9, 6, 5, 5, 2, 1]
Comparator를 인자로 전달받아 사용자 정의 타입에 대해서 사용자가 정렬 기준을 정의할 수 있다. compareBy()를 전달할 수 있다. 이때 compareBy() 함수의 인자로 여러 개의 람다를 전달할 수 있다.
private fun solution(strings: Array<String>, n: Int): Array<String> {
return strings.sortedWith(Comparator { o1, o2 ->
if (o1[n] == o2[n]) o1.compareTo(o2)
else o1[n] - o2[n]
}).toTypedArray()
}
private fun solution2(strings: Array<String>, n: Int): Array<String> {
val result = strings.sortedWith(compareBy({ it[n] }, { it }))
println(result)
return result.toTypedArray()
}
첫 번째 인자로 전달받은 람다를 기준으로 정렬하며, 첫 번째 람다로 정렬했을 때 두 문자열이 동일하다면 두 번째 람다를 기준으로 정렬한다.
컬렉션에 대해 사용할 수 있으며, 리스트 내에 포함된 자료들을 사용자가 지정한 구분자와 함께 하나의 문자열로 표현할 수 있는 함수이다. prefix, postfix 등 여러 인자를 사용하여 다양하게 활용할 수 있다.
val list = listOf("lee", "jung", "park")
println(list) // [lee, jung, park]
println(list.joinToString("")) // leejungpark
println(list.joinToString(" - ")) // lee - jung - park
fromIndex에서 toIndex까지 리스트를 잘라서 반환한다. fromIndex는 포함하고, toIndex는 포함하지 않는다.
val list = listOf(1, 2, 3, 4, 5)
val subList = list.subList(1, 3)
println(subList)
// 결과: [2, 3]
코틀린은 자바와 유사한 문법을 가지고 있지만, 더 많은 편리한 함수들을 제공한다. slice
, sorted
, sortedDescending
, sortedWith
, joinToString
, subList
와 같은 함수들은 코틀린에서 데이터를 다룰 때 매우 유용하다. 자바를 사용해본 개발자라면 코틀린의 이러한 함수들을 사용함으로써 더 효율적이고 간결한 코드를 작성할 수 있을 것이다.