코틀린에서 데이터를 담는 대표적인 자료구조이다. 가장 큰 차이점은 크기 변경이 가능한가와 수정 가능한가에 있다.
자바의 배열과 유사하다. 크기가 정해져 있으며, 한 번 생성하면 크기를 늘리거나 줄일 수 없다.
fun main() {
// arrayOf를 사용하여 생성
val array = arrayOf(1, 2, 3)
// 인덱스로 접근 및 수정 가능
array[0] = 10
println(array[0]) // 10
// array.size로 크기 확인 가능
}
코틀린의 리스트는 크게 두 가지로 나뉜다. 기본적으로 listOf로 만드는 리스트는 수정이 불가능(Immutable)하다는 점이 중요하다.
Immutable List (수정 불가)
생성 시점에 정해진 데이터를 읽기만 할 수 있으며, 요소를 추가하거나 변경할 수 없다.
val list = listOf(1, 2, 3)
// list[0] = 10 // (X) 에러 발생: 수정 불가
Mutable List (수정 가능)
요소를 추가, 삭제, 수정할 수 있는 리스트이다. Java의 ArrayList와 비슷하다.
val mutableList = mutableListOf(1, 2, 3)
mutableList.add(4) // 요소 추가
mutableList.removeAt(0) // 0번 인덱스 삭제
mutableList[0] = 10 // 요소 수정
Array: 크기 고정, 내부 값 수정 가능.
List (listOf): 크기 고정, 내부 값 수정 불가.
MutableList (mutableListOf): 크기 가변, 내부 값 수정 가능.
Tip: 코틀린에서는 데이터의 일관성을 위해 가능하면 수정 불가능한 List를 먼저 사용하고, 데이터 변경이 꼭 필요한 경우에만 MutableList를 사용하는 것을 권장한다.