연관과 평탄화
associate와 flatMap
연관과 평탄화은(는) CoddyKit의 무료 Kotlin Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kotlin Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
연결과 평탄화
강력한 컬렉션 도구를 두 가지 더 살펴보겠습니다. associate 계열 함수는 목록에서 맵을 만들고, flatMap과 flatten은 중첩된 컬렉션을 하나의 평평한 컬렉션으로 바꿉니다.
associateWith 함수
associateWith는 각 요소를 키로 사용하고 람다로 값을 계산하여 Map을 만듭니다.
fun main() {
val words = listOf("a", "bb", "ccc")
val lengths = words.associateWith { it.length }
println(lengths)
}associateBy 함수
associateBy는 그 반대입니다. 각 요소에서 키를 계산하고, 해당 요소를 값으로 유지합니다.
data class User(val id: Int, val name: String)
fun main() {
val users = listOf(User(1, "Ann"), User(2, "Bob"))
val byId = users.associateBy { it.id }
println(byId[2]?.name)
}associate 함수
일반적인 associate는 각 요소에 대해 Pair를 반환하여 키와 값을 한 번에 만들 수 있게 합니다.
fun main() {
val names = listOf("Ann", "Bob", "Cy")
val map = names.associate { it to it.length }
println(map)
}중복 키
associate 함수에서 두 요소가 같은 키를 만들면 마지막 요소가 우선됩니다. 모든 요소가 필요하다면 키를 고유하게 유지해야 합니다.
fun main() {
val words = listOf("apple", "ant", "bee")
val byFirst = words.associateBy { it.first() }
println(byFirst)
}flatten 함수
flatten은 컬렉션으로 이루어진 컬렉션을 받아 하나의 평평한 목록으로 합칩니다.
fun main() {
val nested = listOf(listOf(1, 2), listOf(3, 4), listOf(5))
val flat = nested.flatten()
println(flat)
}flatMap 함수
flatMap은 각 요소를 컬렉션으로 매핑한 다음, 이러한 컬렉션을 모두 하나의 목록으로 평탄화합니다. 한 단계에서 map과 flatten을 함께 수행하는 셈입니다.
fun main() {
val words = listOf("hi", "ok")
val chars = words.flatMap { it.toList() }
println(chars)
}중첩 데이터에 flatMap 적용하기
flatMap은 중첩된 구조를 하나의 항목 시퀀스로 확장하는 데 적합합니다.
data class Team(val members: List<String>)
fun main() {
val teams = listOf(Team(listOf("Ann", "Bob")), Team(listOf("Cy")))
val everyone = teams.flatMap { it.members }
println(everyone)
}flatMap과 map 비교
각 요소가 정확히 하나의 결과를 만들 때는 map을 사용합니다. 각 요소가 컬렉션을 만들고 이를 모두 하나의 평평한 목록으로 합치려면 flatMap을 사용합니다.
fun main() {
val numbers = listOf(1, 2, 3)
val mapped = numbers.map { listOf(it, it * 10) }
val flat = numbers.flatMap { listOf(it, it * 10) }
println("map: $mapped")
println("flatMap: $flat")
}associate와 flatMap 결합하기
이러한 도구는 데이터 파이프라인에서 함께 사용되는 경우가 많습니다. 먼저 중첩 데이터를 평탄화한 다음, 빠르게 조회할 수 있도록 연결하여 조회용 맵으로 만듭니다.
data class Order(val items: List<String>)
fun main() {
val orders = listOf(Order(listOf("pen", "ink")), Order(listOf("pen")))
val counts = orders.flatMap { it.items }.groupingBy { it }.eachCount()
println(counts)
}각 도구를 사용하는 경우
목록에서 빠른 조회용 맵을 만들려면 associateBy/associateWith를 선택하고, 중첩된 컬렉션을 하나로 합치려면 flatMap/flatten을 선택합니다. 이 도구들은 구조화된 데이터를 간결하고 명확하게 다룰 수 있게 합니다.
빠른 확인
flatMap은 무엇을 하나요?
복습
associate, associateBy, associateWith로 맵을 만들고 중복 키가 있으면 마지막 키가 우선된다는 점을 배웠습니다. 또한 flatten과 flatMap으로 중첩을 없애는 방법도 배웠습니다. 이로써 데이터를 변환하고, 구성하고, 집계하고, 재구성하는 데 필요한 컬렉션 도구를 모두 익혔습니다.
AI 튜터와 함께 Kotlin을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 51
- 레슨
- 203
자주 묻는 질문
“연관과 평탄화” 강의는 무료인가요?
네 — “연관과 평탄화” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kotlin Academy 강의 전체를 잠금 해제할 수 있습니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“연관과 평탄화”에서 뭘 배우나요?
associate와 flatMap 브라우저에서 직접 실행하는 실습 코드로 Kotlin Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Kotlin Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Kotlin Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“연관과 평탄화” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Kotlin Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Kotlin Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.