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 |
---|