6월 17일 - Kotlin...시작..?

Yullgiii·2024년 6월 17일
0
post-thumbnail

Kotlin 함수들

코틀린에서는 다양한 내장 함수를 제공하여 개발자가 더 쉽게 작업할 수 있도록 돕는다. 여기서는 몇 가지 유용한 코틀린 함수들을 살펴보겠다. 자바를 사용하다가 코틀린을 처음 접하는 개발자에게도 이해하기 쉽도록 설명하겠다.

Slice

배열을 특정 범위만큼 자르고, 자른 뒤 리스트를 반환하는 함수이다.

Usage

val arr = arrayOf(1, 2, 3, 4, 5)
println(arr.slice(1..3)) 
// 결과: [2, 3, 4]

Sorted

기본적으로 사용할 수 있는 정렬 함수이다. 컬렉션에 대해서 사용된다.

Usage

val list = listOf(5, 2, 9, 1, 5, 6)
val sortedList = list.sorted()
println(sortedList) 
// 결과: [1, 2, 5, 5, 6, 9]

SortedDescending

내림차순 정렬을 지원하는 함수이다. 컬렉션에 대해서 사용된다.

Usage

val list = listOf(5, 2, 9, 1, 5, 6)
val sortedDescList = list.sortedDescending()
println(sortedDescList) 
// 결과: [9, 6, 5, 5, 2, 1]

SortedWith

Comparator를 인자로 전달받아 사용자 정의 타입에 대해서 사용자가 정렬 기준을 정의할 수 있다. compareBy()를 전달할 수 있다. 이때 compareBy() 함수의 인자로 여러 개의 람다를 전달할 수 있다.

Usage - Comparator

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()
}

Usage - compareBy()


private fun solution2(strings: Array<String>, n: Int): Array<String> {
    val result = strings.sortedWith(compareBy({ it[n] }, { it }))
    println(result)
    return result.toTypedArray()
}

첫 번째 인자로 전달받은 람다를 기준으로 정렬하며, 첫 번째 람다로 정렬했을 때 두 문자열이 동일하다면 두 번째 람다를 기준으로 정렬한다.

JoinToString

컬렉션에 대해 사용할 수 있으며, 리스트 내에 포함된 자료들을 사용자가 지정한 구분자와 함께 하나의 문자열로 표현할 수 있는 함수이다. prefix, postfix 등 여러 인자를 사용하여 다양하게 활용할 수 있다.

Usage

val list = listOf("lee", "jung", "park")
println(list) // [lee, jung, park]
println(list.joinToString("")) // leejungpark
println(list.joinToString(" - ")) // lee - jung - park

SubList

fromIndex에서 toIndex까지 리스트를 잘라서 반환한다. fromIndex는 포함하고, toIndex는 포함하지 않는다.

Usage

val list = listOf(1, 2, 3, 4, 5)
val subList = list.subList(1, 3)
println(subList) 
// 결과: [2, 3]

So...

코틀린은 자바와 유사한 문법을 가지고 있지만, 더 많은 편리한 함수들을 제공한다. slice, sorted, sortedDescending, sortedWith, joinToString, subList와 같은 함수들은 코틀린에서 데이터를 다룰 때 매우 유용하다. 자바를 사용해본 개발자라면 코틀린의 이러한 함수들을 사용함으로써 더 효율적이고 간결한 코드를 작성할 수 있을 것이다.

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글