Collection(콜렉션)은 대부분의 프로그래밍 언어에 있는 자료구조이다.
코틀린의 Collection(List, Set, Map)을 살펴보자.
Collection Types
코틀린의 Collection은 기본적으로 Mutable(변할 수 없는)과 Immutable(불변의)을 별개로 지원한다.
Mutable로 생성하면 추가, 삭제가 가능하지만, Immutable로 생성하면 수정이 불가하다.
Immutable (불변)
Read-Only 읽기 전용 Collection (수정, 추가, 삭제 불가)
Mutable (가변)
Write+Read 읽기/쓰기 Collection으로 add, put, remove 등이 가능
코틀린의 콜렉션들은 아래 그림과 같은 상속 구조 갖고 있다.
List
List는 데이터가 저장하거나 삭제될 때 순서를 지키는 Collection이다.
index로 값에 접근하는 순서를 지키며, 같은 값이 중복으로 저장될 수 있다.
List는 Mutable(변할 수 없는)과 Immutable(불변의)을 모두 지원한다.
Immutable List (읽기 전용)
listOf<type>(item, item, ...)로 Immutable List를 생성 및 초기화를 할 수 있다.
코틀린은 아이템의 타입을 추론하기 때문에 타입을 생략해도 된다.
val foods = listOf<String>("김밥", "라면", "김치")
//타입추론으로 <String> 생략 가능
val foods = listOf("김밥", "라면", "김치")
Mutable List (수정 가능)
수정 가능한 List는 mutableListOf로 선언한다.
val colors = mutableListOf("빨강","초록","파랑")
//추가
colors.add("노랑")
//삭제
colors.removeAt(1)
//수정
colors.set(0, "보라")
이외에도 replace, replaceAll, contains, forEach 등의 메소드도 지원한다.
Set
Set은 동일한 아이템이 없는 Collection이다.
Set의 아이템들의 index(순서)는 특별히 정해져 있지 않고, 같은 값이 중복되지 않는다.
Set은 null 객체를 갖고 있을 수 있다.
동일한 객체는 추가될 수 없기 때문에 null도 1개만 가질 수 있다.
List와 같이 Set도 Immutable과 Mutable을 별개로 지원한다.
Immutable Set (읽기 전용)
setOf<type>(item, item, ...)로 객체를 생성할 수 있다.
val foods = setOf("김밥", "김치", "파전")
Mutable Set (수정 가능)
Mutable은 mutableSetOf<type>(item, item, ...) 로 생성할 수 있다.
List와 비슷한 메소드들을 지원한다.
val foods = mutableSetOf("김밥", "김치", "파전")
//추가
foods.add("라면")
//삭제
foods.remove("김치")
//집합의 크기
println(foods.size) //3
//집합 여부
println(foods.contains("김밥")) //true
Map
Map은 key와 value를 짝지어 값을 저장하는 Collection이다.
Map의 key는 유일하기 때문에 동일한 이름의 key는 허용되지 않는다.
Map 또한 Immutable과 Mutable을 별개로 지원한다.
Immutable Map (읽기 전용)
mapOf<key type, value type>(item)로 생성할 수 있다.
아이템은 Pair 객체로 표현하며, Pair에 key와 value를 넣을 수 있습니다.
Pair는 to라는 inifx 함수를 이용하여 A to B로 간단히 표현이 가능하다.
val menu = mapOf<String, int>("공기밥" to 1000, "김치찌개" to 8000)
//or
val menu = mapOf("공기밥" to 1000, "김치찌개" to 8000)
Mutable Map (수정 가능)
Mutable은 mutableMapOf<key type, value type>(item)로 생성한다.
val menu = mutableMapOf("공기밥" to 1000, "김치찌개" to 8000)
//추가
map.put("두루치기", 9000)
// or
map["두루치기"] = 9000
//삭제
map.remove("공기밥")
//수정
map.replace("김치찌개", 9000)
//전체삭제
map.clear()
Reference
https://kotlinlang.org/docs/collections-overview.html
https://codechacha.com/ko/collections-in-kotlin/
'Android > Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린 null 처리 - Safe call, non-null, Elvis operator (0) | 2021.10.24 |
---|---|
[Kotlin] Extension Function(확장 함수) (0) | 2021.09.07 |
[Kotlin] Higher-Order Function, Lambda(고차 함수와 람다) (0) | 2021.09.07 |
댓글