앱 개발/Kotlin

[Kotlin] 코틀린 기본 2 (Array & List , ArrayList)

cha430 2026. 2. 26. 10:33

 

 

리스트에는 두 가지가 있다. immutable(변경할 수 없는)과 mutable.

 

- List (immutable)

- MutableList

 

 

 

1. List (Immutable)

fun array() {
// 초기화 (~Of를 씀)
    val array :Array<Int> = arrayOf(1,2,3)
    val list :List<Int> = listOf(1,2,3)
    
    val array2 :Array<Any> = arrayOf(1,"d",3,4f)
    val list2 :List<Any> = listOf(1,"d",11L)
    
    array[0] = 3   // 가능
    list[0] = 2    // 불가능
    
    // immutable은 값을 가져올 수는 있다.
    var result :Int = list.get(0)
}

 

* 상수의 타입을 지정하지 않아도 자동으로 :Array<Int> 또는 :List<Any> 로 지정된다.

* 숫자만 있을 땐 Integer 이지만 문자나 Long, float 이 섞여있을 땐 자동으로 Any 가 되는 것을 알 수 있다.

 

2. MutableList

 

val a = listOf(1, 2, 3)         // 읽기 전용 (immutable)
val b = mutableListOf(1, 2, 3)  // 수정 가능
val c = arrayListOf(1, 2, 3)    // 수정 가능

a.add(4)  // 컴파일 에러
b.add(5)  // 가능
c.add(5)  // 가능

 

 

 


 

 

 

ArrayList

fun array() {
    var arrayList :ArrayList<Int> = arrayListOf<Int>()	//arrayList 초기화
    arrayList.add(10)
    arrayList.add(20)
}

 

코틀린에서 arrayList는 객체(Reference Type)기 때문에 변수에 실제 데이터가 아닌 객체의 주소(참조값)가 들어간다.

따라서

arrayList 는 주소를 참조하기 때문에 .add() 를 한다고 해서 데이터가 바뀌는 게 아닌 것이고,

val arrayList 로 선언해도 된다.

val list = arrayListOf(1, 2, 3)

list.add(4)     // 가능
list = arrayListOf(5, 6)  // 불가능

 

.add 로 데이터를 추가하는 것은 가능하지만 (객체 내부 변경)

재할당은 불가능하다. (참조 변경)