리스트에는 두 가지가 있다. immutable(변경할 수 없는)과 mutable.
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 로 데이터를 추가하는 것은 가능하지만 (객체 내부 변경)
재할당은 불가능하다. (참조 변경)
'앱 개발 > Kotlin' 카테고리의 다른 글
| [Kotlin] 코틀린 기본 5 (class, 다형성(상속), 생성자) (0) | 2026.02.26 |
|---|---|
| [Kotlin] 코틀린 기본 4 (Nullable, NonNull, 엘비스연산자, !! , let 함수, it) (0) | 2026.02.26 |
| [Kotlin] 코틀린 기본 3 (반복문 for & while, withIndex) (0) | 2026.02.26 |
| [Kotlin] 코틀린 기본 1 (자료형, string template, 조건식if/when) (0) | 2026.02.25 |
| [Kotlin] 매개변수로 람다함수를 이용할 때 소괄호 ( ) 생략 (0) | 2026.01.15 |