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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- listOf, setOf, mapOf: 읽기 전용 컬렉션
- mutableListOf, mutableMapOf: 변경 가능한 컬렉션 빌더
- 요소에 접근하기: get, first, last, getOrNull
- 표준 라이브러리로 컬렉션 순회하고 변환하기