코틀린의 List와 Array

2024. 1. 26. 11:02Kotlin

 

코틀린의 List는 기본적으로 immutable이다

 

immtuable이란 불변성 이라는 뜻으로 객체는 생성된 이후 상태 변경이 안되고, 새로운 객체를 생성해야한다

 

장점

  1. 안정성과 예측 가능성: 불변 객체는 상태가 변하지 않기 때문에 코드를 예측하기 쉽고 안정적입니다. 이로 인해 예기치 않은 부작용을 줄일 수 있습니다.
  2. 스레드 안전성: 불변 객체는 여러 스레드에서 동시에 접근되어도 안전합니다. 동기화 문제를 해결할 필요가 없기 때문에 다중 스레드 환경에서 사용하기 용이합니다.
  3. 코드 단순화: 불변 객체는 값이 변하지 않기 때문에 복잡한 상태 관리를 간소화할 수 있습니다. 코드를 이해하고 유지보수하기가 더 쉬워집니다.
  4. 함수형 프로그래밍 지원: 불변성은 함수형 프로그래밍의 핵심 원칙 중 하나이며, 함수형 스타일의 코드 작성에 적합합니다.

 

 

하지만 List를 가변객체로 선언할 수 있다

 

MuatableList나 mutableListOf를 활용하면 데이터값을 수정할 수 있다

val list = MutableList<Int>(3, {i -> i})
val list = mutableListOf<Int>(0, 1, 2)

 

mutableListOf<Int> 와 MutableList<Int> 의 차이는 뭘까?

 

두 방식 모두 가변리스트를 생성할수 있다

mutableListOf 는 표준라이브러리 함수를 사용하여 짧고 간결하게 리스트를 생성하고

MutableList는 인터페이스를 통해 구현체를 직접 선택하여 생성하는 방법이다 

 

val list = mutableListOf<Int>() // 비어있는 리스트 생성(코딩테스트에서 자주 쓰인다)

 

list.add를 활용하면 단일값을 추가할 수 있고

list.addAll을 활용하면 한번에 여러 값을 추가할 수 있다

단, 리스트에 리스트를 추가하려면 list.add(list)이 아닌 list.addAll(list) 를 활용해야 한다

 

 remove를 활용하면 특정 값을 없을수 있는데 특정 위치의 값을 없애려면 removeAt(INDEX)를 활용하면 된다

 

retainAll은 공통인요소만을 남겨둔다

 

 

 

https://velog.io/@min0505/%EC%BD%94%ED%8B%80%EB%A6%B0-List-Array-%EC%A0%95%EB%A6%AC

'Kotlin' 카테고리의 다른 글

Dispatchers  (0) 2024.11.27
Continuation  (0) 2024.11.27
Coroutine - Suspend  (1) 2024.11.20
Coroutine VS Thread  (0) 2024.11.20
Coroutine - Global Scope  / runBlocking  (0) 2024.11.20