List와 MutableList

코틀린에서는 컬렉션(Collection)을 크게 두 가지로 구분하여 정의하는데, 바로 immutable(불변)과 mutable(가변)입니다. List는 불변 컬렉션이고 MutableList는 가변 컬렉션입니다.

 

사전적 의미처럼 immutable은 'read only'을 의미하지만, mutable은 'read & write'을 의미합니다. 따라서 List형은 리스트의 변화가 없어야 할 때 주로 사용하고, MutableList형은 원소의 추가/삭제 등 리스트의 변경이 필요한 경우에 사용합니다. 그래서 List에는 MutableList의 add()나 remove()/removeAt()과 같은 함수가 정의되어있지 않습니다.

 

 

 

활용 코드

fun main(){

    val list = listOf(1, 2, 3, 4, 5)
    // list.add(10)             // 오류. add() 함수 없음.
    println("\n====================[list]====================")
    println(list)

    
    val mList = mutableListOf(1, 2, 3, 4, 5)
    println("\n====================[mList]====================")
    println(mList)

    
    mList.addAll(listOf(10, 20, 30))
    mList.add(99)
    mList.add(3, -10)
    println("\n====================[mList]====================")
    println(mList)
    

    if (mList.remove(100)) {
        println("\n100이 삭제되었습니다.")
    } else {
        println("\n100이 존재하지 않습니다.")
    }
}

 

 

실행 결과

 

 

 

 

코틀린 컬렉션 내부에는 indices라는 프로퍼티가 정의되어 있는데, 이는 인덱스 범위를 나타냅니다. 이 indices 속성은 반복문을 통한 컬렉션 처리 시에 조금 더 편리하게 만들어줍니다. indices 속성은 immutable과 mutable에 구애받지 않습니다.

// indices 속성을 이용한 반복문

for (i in list.indices) {
    print("${list[i] + 100}\t")
}

// 출력 결과 : 101  102  103  104  105

'📌 Kotlin' 카테고리의 다른 글

[Kotlin] 널 안정성  (0) 2023.02.12

+ Recent posts