KOTLIN · 컬렉션
컬렉션 함수형 API — filter, map, reduce
Kotlin 컬렉션의 강력한 함수형 API로 선언적인 데이터 변환을 구현합니다.
컬렉션중급filtermapreducefoldgroupBy
핵심 설명
Kotlin 컬렉션의 강력한 함수형 API로 선언적인 데이터 변환을 구현합니다.
Kotlin code
data class Product(val name: String, val price: Int, val stock: Int)
val products = listOf(
Product("Kotlin Book", 35000, 10),
Product("Java Book", 30000, 0),
Product("Go Guide", 28000, 5),
Product("Python Crash", 25000, 20),
)
// filter
val inStock = products.filter { it.stock > 0 }
// map
val names = products.map { it.name }
val prices = products.map { it.price }
// find / firstOrNull
val cheap = products.firstOrNull { it.price < 30000 }
// groupBy
val byStock = products.groupBy { if (it.stock > 0) "재고있음" else "품절" }
// partition — 두 리스트로 분리
val (available, soldOut) = products.partition { it.stock > 0 }
// flatMap
val nested = listOf(listOf(1,2), listOf(3,4))
val flat = nested.flatMap { it } // [1, 2, 3, 4]
// reduce / fold
val total = prices.reduce { sum, p -> sum + p }
val avg = prices.fold(0) { sum, p -> sum + p } / prices.size
// sortedBy / sortedByDescending
val sorted = products.sortedBy { it.price }
val top3 = products.sortedByDescending { it.price }.take(3)
// 체이닝
val result = products
.filter { it.stock > 0 }
.sortedBy { it.price }
.map { "${it.name}: ${it.price}원" }학습 팁
컬렉션 체이닝은 매 단계마다 새 리스트를 생성합니다. 요소가 많다면 .asSequence()로 변환해 지연(lazy) 평가를 사용하세요.
주의할 점
map { }.filter { }보다 mapNotNull { }이 null 제거 + 변환을 한 번에 처리합니다.
자주 묻는 질문
컬렉션 함수형 API — filter, map, reduce란 무엇인가요?
Kotlin 컬렉션의 강력한 함수형 API로 선언적인 데이터 변환을 구현합니다.
컬렉션 함수형 API — filter, map, reduce 학습 시 주의할 점은 무엇인가요?
map { }.filter { } 보다 mapNotNull { } 이 null 제거 + 변환을 한 번에 처리합니다.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.