Kotlin Academy · 강의

연관과 평탄화

associate와 flatMap

레슨 4/413개 단계

연관과 평탄화은(는) 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 필터링과 매핑
  2. 그룹화와 분할
  3. 집계
  4. 연관과 평탄화
← Kotlin Academy(으)로 돌아가기