PHpullh

KOTLIN · 컬렉션

zip과 flatten

zip은 두 컬렉션을 쌍으로 결합하고, flatten은 중첩 컬렉션을 평탄화합니다.

컬렉션중급zipflattenflatMapunzip

핵심 설명

zip은 두 컬렉션을 쌍으로 결합하고, flatten은 중첩 컬렉션을 평탄화합니다.

Kotlin code

fun main() {
    val names = listOf("김철수", "이영희", "박지성")
    val ages = listOf(25, 30, 28)
    val cities = listOf("서울", "부산")

    // zip: 쌍으로 결합
    val pairs = names.zip(ages)
    println(pairs) // [(김철수,25), (이영희,30), (박지성,28)]

    // zip with transform
    val infos = names.zip(ages) { name, age -> "$name($age세)" }
    println(infos) // [김철수(25세), 이영희(30세), 박지성(28세)]

    // 짧은 쪽에 맞춰짐
    val zipped = names.zip(cities)
    println(zipped) // [(김철수,서울), (이영희,부산)]

    // unzip
    val (unNames, unAges) = pairs.unzip()
    println("이름: $unNames, 나이: $unAges")

    // flatten: 중첩 리스트 평탄화
    val nested = listOf(listOf(1, 2), listOf(3, 4), listOf(5))
    println(nested.flatten()) // [1, 2, 3, 4, 5]

    // flatMap: map + flatten
    val words = listOf("Hello World", "Kotlin Fun")
    println(words.flatMap { it.split(" ") })
}

학습 팁

zip은 짧은 컬렉션의 길이에 맞춰집니다. 길이가 다를 수 있다면 zipWithNext()나 인덱스 기반 접근을 고려하세요.

주의할 점

flatten()은 한 레벨만 평탄화합니다. 깊은 중첩을 완전히 평탄화하려면 재귀적으로 적용해야 합니다.

자주 묻는 질문

zip과 flatten란 무엇인가요?

zip 은 두 컬렉션을 쌍으로 결합하고, flatten 은 중첩 컬렉션을 평탄화합니다.

zip과 flatten 학습 시 주의할 점은 무엇인가요?

flatten() 은 한 레벨만 평탄화합니다. 깊은 중첩을 완전히 평탄화하려면 재귀적으로 적용해야 합니다.

Continue Learning

Kotlin 학습을 이어가세요

총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.