[Kotlin] Collection
- 가변 클래스(Mutable) : List, Set, Map
- 컬렉션에 element를 추가, 삭제 할 수 있음
- 불변 클래스(Immutable) : List, Set, Map
- 컬렉션에 element를 추가, 삭제 불가
- 불변 클래스이지만 Reference type인 element의 필드는 변경 가능
- 코틀린에서는 뷸변/가변을 먼저 지정해 줘야 한다
1. List
final List<Interger> numbers = List.of(100, 200);
(1) List
val numbers = listOf(100, 200)
val emptyList = emptyList<Int>() // 타입 추론 가능하면 generic 생략 가능
println(numbers[0]) // 100
for (num in numbers) {
println(num)
}
for ((idx, value) in numbers.withIndex()) {
println("${idx} ${value}")
}
(2) ImmutableList
val numbers = mutableListOf(100, 200)
numbers.add(300)
println(numbers[0]) // 100
for (num in numbers) {
println(num)
}
for ((idx, value) in numbers.withIndex()) {
println("${idx} ${value}")
}
2. Set
val numbers = setOf(100, 200)
val numbers2 = mutableSetOf(100, 200)
3. Map
-
map[key] = value
로 mutableMap에 값 할당 가능 -
put()
도 사용 가능
// Mutable
val oldMap = mutableMapOf<Int, String>()
oldMap[1] = "Monday"
oldMap[2] = "Tueday"
// Immutable
mapOf(1 to "Monday", 2 to "Tueday")
for (key in oldMap.keys) {
println(key) // 1
println(oldMap[key]) // "Monday"
}
for ((key, value) in oldMap.entries) {
println(key) // 1
println(value) // "Monday"
}
Collection의 nullable
-
List<Int?>
: element에 null을 넣을 수 있지만 List가 null이 될 수 없음 -
List<Int>?
: element로 null을 넣을 수 없지만 List가 null이 될 수 있음 -
List<Int?>?
: element로 null을 넣을 수 있고 List 자체도 null이 될 수 있음