23.12.20 문법정리

KSang·2023년 12월 20일
0

TIL

목록 보기
16/101

groupBy

groupBy는 Kotlin의 표준 라이브러리 함수 중 하나로, 컬렉션의 각 요소를 그룹화하여 맵을 생성하는 데 사용

이 함수는 주로 컬렉션 내의 요소를 특정 조건에 따라 그룹화할 때 유용함

fun main() {
    val words = listOf("apple", "banana", "blueberry", "cherry", "coconut")

    val groupedByLength = words.groupBy { it.length }

    println("Grouped by Length: $groupedByLength")
}
Grouped by Length: {5=[apple], 6=[banana, cherry], 9=[blueberry, coconut]}

asSequence

asSequence() 함수는 Kotlin에서 컬렉션을 시퀀스로 변환할 때 사용되는 함수이다.

시퀀스는 지연 계산을 통해 처리되며, 필요한 경우에만 요소를 계산하는데, 이를 통해 성능 향상을 가져올 수 있다.

컬렉션이 클 경우 매우 효율적으로 변하게 된다

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5)

    // 일반적인 리스트 연산
    val sum1 = numbers.filter { it % 2 == 0 }.map { it * 2 }.sum()
    println("Sum using list operations: $sum1")

    // 시퀀스를 사용한 연산
    val sum2 = numbers.asSequence().filter { it % 2 == 0 }.map { it * 2 }.sum()
    println("Sum using sequence operations: $sum2")
}

여기서 asSequence()를 사용하면 중간 연산인 filter와 map이 한 번만 계산되고 최종 연산인 sum이 호출될 때에만 처리된다.

자세한건 https://velog.io/@dhwlddjgmanf/Kotlin-asSequence-vs-non-asSequence 여기

flatten

flatten은 Kotlin의 표준 라이브러리 함수 중 하나로, 중첩된 컬렉션을 평평하게 만들어주는 역할을 한다

중첩된 리스트나 맵 등을 1차원 컬렉션으로 변환

fun main() {
    val nestedList = listOf(listOf(1, 2, 3), listOf(4, 5, 6), listOf(7, 8, 9))

    val flattenedList = nestedList.flatten()

    println("Nested List: $nestedList")
    println("Flattened List: $flattenedList")
}
Nested List: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Flattened List: [1, 2, 3, 4, 5, 6, 7, 8, 9]

run

run은 Kotlin의 표준 라이브러리 함수 중 하나로, 어떤 객체에 대해 수행할 작업을 블록으로 정의할 수 있다

run 함수는 호출 대상 객체의 컨텍스트 내에서 코드 블록을 실행하고, 그 블록의 결과를 반환함

data class Person(var name: String, var age: Int)

fun main() {
    val person = Person("Alice", 25)

    val result = person.run {
        println("Name: $name, Age: $age")
        age + 5  // 마지막 표현식이 블록의 결과로 반환됨
    }

    println("Result: $result")
}

위 코드에서 run 함수는 Person 객체에 대한 블록을 실행한다. 이 블록에서는 객체의 속성에 접근하고, 그 결과로 나이에 5를 더한 값을 반환한다

Name: Alice, Age: 25
Result: 30

0개의 댓글