0Pricing
Kotlin Academy · 강의

listOf, setOf, mapOf: 읽기 전용 컬렉션

불변 컬렉션을 만들고 컬렉션에 접근하는 방식을 이해해 보세요.

listOf, setOf, mapOf: 읽기 전용 컬렉션은(는) CoddyKit의 무료 Kotlin Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kotlin Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

세 가지 생성 함수

코틀린 표준 라이브러리는 listOf, setOf, mapOf를 제공하여 읽기 전용 컬렉션을 생성할 수 있도록 합니다. 읽기 전용이란 인터페이스를 통해 항목을 추가하거나 제거할 수 없다는 의미입니다.

목록 만들기

listOf는 읽기 전용 List<T>를 만듭니다. 요소 타입은 인수에서 추론됩니다.

fun main() {
    val fruits = listOf("apple", "banana", "cherry")
    println(fruits)        // [apple, banana, cherry]
    println(fruits.size)   // 3
}

집합 만들기

setOf는 읽기 전용 Set<T>를 반환합니다. 중복된 요소는 자동으로 하나로 합쳐집니다.

fun main() {
    val tags = setOf("kotlin", "java", "kotlin", "android")
    println(tags) // [kotlin, java, android]
    println(tags.size) // 3
}

맵 만들기

mapOf는 key to value 쌍을 받아 읽기 전용 Map<K, V>를 반환합니다.

fun main() {
    val ages = mapOf("Alice" to 30, "Bob" to 25)
    println(ages["Alice"]) // 30
    println(ages.keys)     // [Alice, Bob]
}

타입 주석

추론된 타입이 잘못되었거나 목록이 비어 있다면 명시적인 타입 매개변수를 제공하십시오.

fun main() {
    val empty: List<String> = listOf()
    val numbers: List<Int> = listOf(1, 2, 3)
    val emptyMap: Map<String, Int> = mapOf()
    println("empty=${empty}, n=${numbers}, m=${emptyMap}")
}

빈 컬렉션 변형

빈 컬렉션을 명시적으로 원할 때는 emptyList(), emptySet(), emptyMap()을 사용하십시오. 의도가 분명해야 할 때 타입 매개변수를 사용한 listOf()보다 더 적절합니다.

fun main() {
    val xs = emptyList<String>()
    val ys = emptySet<Int>()
    val zs = emptyMap<String, Int>()
    println("${xs.size}, ${ys.size}, ${zs.size}") // 0, 0, 0
}

읽기 전용은 정말 읽기 전용입니다

List 인터페이스에는 add가 없습니다. 컴파일러가 변경을 거부합니다.

fun main() {
    val items = listOf(1, 2, 3)
    // items.add(4) // ERROR: List has no add
    val bigger = items + 4 // creates new list
    println(bigger) // [1, 2, 3, 4]
}

내부 구현

내부적으로 listOf는 수정할 수 없는 뷰로 감싼 Java ArrayList를 반환합니다. 읽기 전용이라는 것은 인터페이스 계약이지, 리플렉션을 통한 변경까지 막는 런타임 보장은 아닙니다.

fun main() {
    val xs = listOf(1, 2, 3)
    println(xs::class.simpleName) // ArrayList
}

Pair와 to

중위 함수 to는 Pair<A, B>를 만듭니다. 맵 리터럴과 튜플을 만들 때 편리합니다.

fun main() {
    val pair = "key" to 42
    println(pair) // (key, 42)
    val m = mapOf("a" to 1, "b" to 2)
    for ((k, v) in m) println("$k -> $v")
}

읽기 전용 컬렉션 순회

읽기 전용 컬렉션은 for, forEach, map, filter와 같은 표준 순회 방식을 모두 지원합니다.

fun main() {
    val nums = setOf(1, 2, 3, 4)
    val doubled = nums.map { it * 2 }
    println(doubled) // [2, 4, 6, 8]
}

목록 연결하기

+ 연산자는 결합된 새 목록을 만듭니다. 읽기 전용 특성도 유지됩니다.

fun main() {
    val a = listOf(1, 2)
    val b = listOf(3, 4)
    val combined = a + b
    println(combined) // [1, 2, 3, 4]
}

빠른 확인

listOf(1, 2, 3)으로 만든 목록에서 add(4)를 호출하면 어떻게 될까요?

복습

listOf, setOf, mapOf는 읽기 전용 컬렉션을 만듭니다. 이러한 컬렉션은 인터페이스를 통해 수정할 수 없습니다. +를 사용해 새 컬렉션을 만들고, 타입이 지정된 빈 컬렉션에는 emptyList()/emptySet()/emptyMap()을 사용하십시오.

자주 묻는 질문

“listOf, setOf, mapOf: 읽기 전용 컬렉션” 강의는 무료인가요?

네 — “listOf, setOf, mapOf: 읽기 전용 컬렉션” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kotlin Academy 강의 전체를 잠금 해제할 수 있습니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“listOf, setOf, mapOf: 읽기 전용 컬렉션”에서 뭘 배우나요?

불변 컬렉션을 만들고 컬렉션에 접근하는 방식을 이해해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Kotlin Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Kotlin Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Kotlin Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“listOf, setOf, mapOf: 읽기 전용 컬렉션” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Kotlin Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Kotlin Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. listOf, setOf, mapOf: 읽기 전용 컬렉션
  2. mutableListOf, mutableMapOf: 변경 가능한 컬렉션 빌더
  3. 요소에 접근하기: get, first, last, getOrNull
  4. 표준 라이브러리로 컬렉션 순회하고 변환하기
← Kotlin Academy(으)로 돌아가기