Kotlin에는 두 가지 유형의 List가 있다
1. 읽기 목적으로 사용되는 Immutable List(불변)
2. 데이터를 쓸 수 있는 mutable List(가변)
잠깐 가변성과 불변성에 대해 알아보자
가변성(Mutability)
가변성은 상태를 가지는 경우를 말하는데, 아래와 같은 문제가 발생할 수 있다.
- 멀티스레드에서 값을 보장하지 못함
- 값의 예측이 어렵고 변경에 있어서 위험함
- 테스트와 디버깅이 어려움
- 상태 변경 발생 시 처리 필요
불변성(Immutability)
함수형 프로그래밍에서는 불변성을 중요하게 생각함.
Kotlin에서는 불변성을 강제하지는 않으나, 불변성을 권장하고 있음
불변성이란, 상태를 변경하지 않는 것
즉, 메모리의 특정 공간에 저장된 값을 변경하지 않는 것을 말함
불변성은 생성 시점 이후 한 번 정의된 상태를 유지하기 때문에 스레드 간 안정성이 보장되며, 동기화 문제도 해결 가능하다.
오늘은 Collection 중 mutable, immutable list에 대해 알아보자
Immutable List
Kotlin에서 Immutable List를 만들 땐, listOf()를 사용한다.
listOf를 사용해서 정의한 리스트는 add, modify, delete 작업이 불가능하다.
fun main() {
val list = listOf("yewon", "kotlin", "world")
println(list)
}
데이터의 추가, 수정, 삭제를 위한 list as MutableList 과 같은 다운캐스팅 시도는 읽기 전용 규칙을 무시하기 때문에 지양해야 함
대신 toMutableList() 함수를 사용하면 된다.
Mutable List
kotlin에서 Mutable List를 만들 땐, mutableListOf()를 사용한다.
fun main() {
val mutableList = mutableListOf("yewon", "kotlin", "world")
mutableList.add("android") // 추가
mutableList.set(0, "yewon kim") // 수정
mutableList.remove("yewon") // 삭제
println(mutableList)
// 결과 [yewon kim, kotlin, world, android]
}
코틀린에서 var과 Mutable Collection을 사용하면 두 개의 가변 포인트를 모두 동기화 해줘야 하기 때문에 이렇게 사용하면 안됨
val + Mutable Collection, var + Immutable Collection을 사용하면 변경 가능한 Collection으로 사용이 가능함
참고
[Kotlin] 불변성(Immutability)과 가변성(Mutability)
함수형 프로그래밍에서는 불변성을 중요하게 생각합니다. 코틀린은 함수형 프로그래밍을 지원하는 언어로 불변성을 강제하지않고 가변을 허용하지만 불변성을 권장하고 있습니다. 불변성(Immut
velog.io
https://medium.com/@anupamsingh696/kotlin-mutable-vs-immutable-list-a534ffbfa096
Kotlin Mutable Vs Immutable List
The Kotlin List helps the developer read and write data locally. There are two types of lists available in Kotlin. A list that is used only…
medium.com
'Kotlin > 📕Kotlin 공부' 카테고리의 다른 글
Kotlin 널 안정성(Null Safety) (1) | 2024.09.12 |
---|---|
Kotlin backing field (0) | 2024.09.12 |
isEmpty, isBlank 차이 (0) | 2024.07.27 |
StringBuilder (0) | 2024.07.20 |
댓글