Kotlin 표준 라이브러리에는 스트림을 처리하는데 유용한 많은 확장 함수 및 유틸리티 함수가 포함되어 있습니다. 이러한 함수들은 컬렉션 처리, 스트림 변환, 필터링, 매핑 등 다양한 작업을 수행할 수 있습니다. 아래에서 몇 가지 주요한 유틸리티 함수를 살펴보겠습니다.
1. filter() 함수
컬렉션의 요소를 필터링하는 함수입니다.
val numbers = listOf(1, 2, 3, 4, 5)
val evenNumbers = numbers.filter { it % 2 == 0 }
// 결과: evenNumbers = [2, 4]
2. map() 함수
컬렉션의 각 요소를 변환하는 함수입니다.
val numbers = listOf(1, 2, 3, 4, 5)
val squaredNumbers = numbers.map { it * it }
// 결과: squaredNumbers = [1, 4, 9, 16, 25]
3. flatMap() 함수
컬렉션의 각 요소를 변환하고, 이를 평탄화하여 하나의 리스트로 만드는 함수입니다.
val nestedList = listOf(listOf(1, 2), listOf(3, 4), listOf(5, 6))
val flatList = nestedList.flatMap { it }
// 결과: flatList = [1, 2, 3, 4, 5, 6]
4. forEach() 함수
컬렉션의 각 요소에 대해 주어진 동작을 수행하는 함수입니다.
val numbers = listOf(1, 2, 3, 4, 5)
numbers.forEach { println(it) }
// 결과: 1, 2, 3, 4, 5가 각 줄에 출력됨
5. reduce() 함수
컬렉션의 요소를 순서대로 결합하여 최종 결과를 생성하는 함수입니다.
val numbers = listOf(1, 2, 3, 4, 5)
val product = numbers.reduce { acc, number -> acc * number }
// 결과: product = 120
6. fold() 함수
reduce와 유사하지만 초기값을 지정할 수 있습니다.
val numbers = listOf(1, 2, 3, 4, 5)
val product = numbers.fold(1) { acc, number -> acc * number }
// 결과: product = 120
7. groupBy() 함수
주어진 키에 따라 컬렉션을 그룹화하는 함수입니다.
val words = listOf("apple", "banana", "orange")
val groupedByLength = words.groupBy { it.length }
// 결과: {5=["apple"], 6=["banana", "orange"]}
8. distinct() 함수
컬렉션 내에서 중복된 요소를 제거한 새로운 컬렉션을 생성하는 함수입니다.
val numbers = listOf(1, 2, 2, 3, 4, 4, 5)
val distinctNumbers = numbers.distinct()
// 결과: distinctNumbers = [1, 2, 3, 4, 5]
9. sorted() 함수
컬렉션을 정렬하는 함수입니다.
val numbers = listOf(5, 3, 1, 4, 2)
val sortedNumbers = numbers.sorted()
// 결과: sortedNumbers = [1, 2, 3, 4, 5]
10. zip() 함수
두 개의 컬렉션을 순서대로 조합하여 새로운 컬렉션을 생성하는 함수입니다.
val letters = listOf("a", "b", "c")
val numbers = listOf(1, 2, 3)
val zippedList = letters.zip(numbers)
// 결과: zippedList = [("a", 1), ("b", 2), ("c", 3)]
이러한 함수들은 Kotlin의 표준 라이브러리에서 제공되며, 컬렉션을 효과적으로 다루고 처리할 수 있도록 도와줍니다. 필요에 따라 이러한 함수들을 적절히 활용하여 코드를 간결하게 작성할 수 있습니다.
With ChatGPT
'Kotlin > 포스팅' 카테고리의 다른 글
코틀린 URL 유틸리티 (0) | 2024.01.01 |
---|---|
코틀린 스트림 생성 (0) | 2024.01.01 |
코틀린 파일과 I/O 스트림 (0) | 2024.01.01 |
코틀린 컬렉션 순서 (0) | 2024.01.01 |
코틀린 하위 컬렉션 추출 (0) | 2024.01.01 |