본문 바로가기
Kotlin

Kotlin - 컬렉션

by sinabeuro 2023. 5. 6.
728x90

코틀린에서 배열은 없다.

컬렉션의 다양한 표현 방식

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 한다.

 

 

728x90

'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

댓글