PHpullh
학습 라이브러리/Kotlin/불변 컬렉션 활용 (Immutable Collections)

KOTLIN · 컬렉션

불변 컬렉션 활용 (Immutable Collections)

Kotlin은 읽기 전용 컬렉션을 기본으로 제공합니다. kotlinx.collections.immutable로 진정한 불변 컬렉션을 사용합니다.

컬렉션중급immutablebuildListdefensive-copyread-only

핵심 설명

Kotlin은 읽기 전용 컬렉션을 기본으로 제공합니다. kotlinx.collections.immutable로 진정한 불변 컬렉션을 사용합니다.

Kotlin code

fun main() {
    // 읽기 전용 (인터페이스만 제한)
    val readOnly: List<Int> = listOf(1, 2, 3)
    // readOnly.add(4) // 컴파일 오류

    // mutable 뷰로 변경 가능 (주의!)
    val mutable = mutableListOf(1, 2, 3)
    val view: List<Int> = mutable
    mutable.add(4)
    println(view)  // [1, 2, 3, 4] - 영향 받음!

    // 안전한 방어적 복사
    fun getItems(): List<Int> {
        val internal = mutableListOf(1, 2, 3)
        return internal.toList()  // 복사본 반환
    }

    // buildList로 불변 리스트 생성
    val immutable = buildList {
        add(1)
        addAll(listOf(2, 3, 4))
        removeIf { it % 2 == 0 }
    }
    println(immutable)  // [1, 3]

    // buildMap
    val config = buildMap {
        put("host", "localhost")
        put("port", "8080")
    }
    println(config)
}

학습 팁

buildList, buildMap, buildSet은 빌더 내에서만 변경 가능하고, 결과는 읽기 전용입니다.

주의할 점

읽기 전용 List와 진정한 불변 리스트는 다릅니다. 원본 MutableList가 변경되면 뷰도 영향을 받습니다. toList()로 복사하세요.

자주 묻는 질문

불변 컬렉션 활용 (Immutable Collections)란 무엇인가요?

Kotlin은 읽기 전용 컬렉션을 기본으로 제공합니다. kotlinx.collections.immutable 로 진정한 불변 컬렉션을 사용합니다.

불변 컬렉션 활용 (Immutable Collections) 학습 시 주의할 점은 무엇인가요?

읽기 전용 List 와 진정한 불변 리스트는 다릅니다. 원본 MutableList 가 변경되면 뷰도 영향을 받습니다. toList() 로 복사하세요.