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() 함수는 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은 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은 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