코틀린의 각 컬렉션 클래스들은 Mutable, Immutable 2가지가 존재한다.
최근 버전의 자바는 Immutable 컬렉션을 제공하지만, Mutable 컬렉션과 같은 인터페이스를 구현하고 있기 때문에, add와 같은 메소드들을 호출할 수 있고, 이는 실행시간에 예외를 발생시킨다.
코틀린은 Immutable 컬렉션의 연산이 불가능하다는 것을 실행시간에 알리지 않는다.
그래서 View가 존재한다.
- List, Set, Map은 각각 뷰를 2개씩 가지고 있다.
- Mutable View - 읽기, 쓰기
- Immutable View - 읽기 전용
- mutable이든, immutable이든 자바의 기본 컬렉션에 매핑된다.
- 쓰기, 읽기 제한을 하는 것은 코틀린 컴파일러의 역할이다.
- 따라서 실행 시간에 오버헤드가 없다.
- 예를들어,
MutableList
,List
컬렉션이 있다.- 둘 다 코틀린의 ArrayList에 매핑되지만, List를 사용할 때는 add같은 쓰기 연산을 할 수 없다.
- Immutable View가 스레드 안정성을 보장하지는 않는다.
- immutable view가 참조하고 있는 컬렉션은 자바의 mutable 컬렉션이다.
- 실제로 매핑된 컬렉션을 참조하는 다른 뷰가 변경할 수도 있다.
- immutable view가 참조하고 있는 컬렉션은 자바의 mutable 컬렉션이다.
'Programming > 언어' 카테고리의 다른 글
[Kotlin] Generics 공변성, 반공변성(out, in) (0) | 2023.02.26 |
---|---|
[Kotlin] Data Class (0) | 2023.02.15 |
[Kotlin] Unit, Any, Nothing 클래스 (0) | 2023.02.12 |
[Kotlin] 타입추론 (0) | 2023.02.12 |
[Kotlin] 표현식과 명령문 (0) | 2023.02.12 |