자바에서 데이터를 저장하는 기본 자료 구조들을 한 곳에 모아 관리와 사용을 편하기 하기 위해 제공하는 프레임 워크를 의미하며, (List, Set, Map)으로 나눌 수 있다.
코틀린은 Mutable 컬렉션과 Imutable 컬렉션을 구분해서 사용하는 특징이 있따.
List는 데이터가 저장하거나 삭제될 때 순서를 지키는 컬렉션이다. List는 Mutable과 Immutable을 모두 지원
val 리스트명 = listOf<타입>(변수1, 변수2, 변수3, ...)
// val 변수명 = listOf(변수1, 변수2, 변수3, ...) 처럼 타입 생략 가능
listOf<타입>(아이템,)으로 Immutable List를 생성 및 초기화를 할 수 있으며, 타입은 추론하기 때문에 생략이 가능하다.
Immutable의 특성에 따라서 get만 가능하고, List의 getter는 get(index), [index]가 가능하다.
val 리스트명 = mutableListOf<타입>(변수1, 변수2, 변수3, ...)
리스트명.remove(변수명1) // 변수 추가
리스트명.add(변수명2) // 변수 삭제
리스트명.addAll(listOf("melon", "cherry")) // 리스트 추가
리스트명.removeAt(3) // 인덱스 사용한 삭제
Mutable List는 추가 및 삭제 기능이 가능하다. replace, replaceAll, contains, forEach 등 다양한 메소드가 존재
Set은 List와 달리 중복이 허용되지 않으며, 순차적이지 않은 컬렉션이다. Set 또한 Mutable, Immuable이 존재한다.
val 셋명 = SetOf<타입명>(변수1, 변수2, 변수3, ...)
size, contains, isEmpty 등의 메소드가 존재한다. forEach, Iterator 등으로 모든 객체를 탐색할 수 있다.
val 셋명 = mutableSetOf<타입명>(변수1, 변수2, 변수3, ...)
Mutable Set 또한 List처럼 add, remove가 가능하고 그외 메소드가 존재한다.
Map은 '키'와 '값'으로 이루어진 한 쌍의 데이터를 관리하기 위한 컬렉션으로 효율적인 검색을 지원한다. 순차적이지 않고 '키'는 중복될 수 없다.
Map은 Immutable타입과 Mutable을 지원한다.
val map = mapOf<K-타입, V-타입>(K1 to V1, K2 to V2, K3 to V3)
val map = mapOf(Pair(K,V),Pair(K2,V2), ...)
Map 또한 get(index)와 [Index]를 지원하고, keys와 values를 통해 key와 value으로만 구성된 Set을 리턴 받을 수 있다.
val map = mutableMapOf<K, V>(K1 to V1, ...)
Mutable Map은 Put를 통해 추가해줄 수 있으며, Pair 말고 인자로 key와 value를 넣어주면 된다.
또한 Map명[K] = V 를 통해 추가할 수 있다.