코틀린에서 배열은 없다.
컬렉션의 다양한 표현 방식
fun main() {
val array = arrayOf(100, 200)
array.plus(300)
for (i in array.indices) {
println("$i ${array[i]}")
}
for ((index, value) in array.withIndex()) {
println("$index $value")
}
for (i in 0 until array.size) {
println(array[i])
}
for (element in array) {
println(element)
}
}
컬렉션의 불변인지, 가변인지를 설정해야함.
가변 컬렉션: 컬렉션에 element 를 추가, 삭제할 수 있다.
불변 컬렉션: 컬렉션에 element 를 추가, 삭제할 수 없다.
불변 컬렉션이라고 하더라도 내부의 element 값은 수정할 수 있다.
코틀린은 불변/가변을 지정해 주어야 한다.
List<Int> <--> mutableList<Int>
Set <--> MutableSet (LinkedHashSet)
Map <--> MutableMap
Map
Map 선언
val oldMap = mutableMapOf<Int, String>()
oldMap[1] = "MONDAY"
oldMap[2] = "TUESDAY"
val map = mapOf(1 to "MONDAY", 2 to "TUESDAY", "ok" to "test")
println(map)
println(map["ok"])
Map 반복문
for (key in oldMap.keys) {
println(key)
println(oldMap[key])
}
for ((key, value) in oldMap.entries) {
println(key)
println(value)
}
컬렉션의 null 가능성, Java 와 함께 사용하기
List<Int?> : 리스트에 null이 들어갈 수 있지만, 리스트는 절대 null이 아님
List<Int>? : 리스트에는 null이 들어갈 수 없지만, 리스트는 null일 수 있음
List<Int?>? : 리스트에 null이 들어갈 수도 있고, 리스트가 null 일 수도 있음
?위치에 따라 null 가능성 의미가 달라지므로 차이를 잘 이해하셔야 합니다.
Java 는 읽기 전용 컬렉션과 변경 가능 컬렉션을 구분하지 않는다.
코틀린 쪽의 컬렉션이 Java에서 호출되면 컬렉션 내용이 변할 수 있음을 감안해야 한다.
코틀린 쪽에서 Collections.unmodifablexxx() 을 활용하면 변경 자체를 막을 수는 있다!
자바 쪽에서 코틀린 컬렉션을 가져다 사용할 때 플랫폼 타입을 신경써야 한다.
Java 코드를 보며, 맥락을 확인하고 Java 코드를 가져오는 지점을 wrapping 한다.
'Kotlin' 카테고리의 다른 글
Kotlin - 일급 시민(First-class citizen) (0) | 2023.08.08 |
---|---|
Kotlin - 다양한 함수 (0) | 2023.05.06 |
코틀린 - Object 함수(Companion) (0) | 2023.05.01 |
코틀린 - 접근 제어자 (0) | 2023.05.01 |
코틀린 - 클래스 생성자와 상속 (0) | 2023.05.01 |
댓글