공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
코틀린에도 자바처럼 Collections 가 존재합니다.
이번 포스팅에서는 코틀린의 Collections 에 대해 공부합니다.
많은 프로그래밍 언어에서 Collection은 공통의 컨셉을 가지는데요,
Collection 은 일반적으로 0개 또는 많은 수의 같은 타입의 오브젝트를 포함합니다.
그리고 이 오브젝트를 Collection에서는
elements 또는 items 라고 부릅니다.
List : index로 접근할 수 있는 순서가 있는 collection입니다.
index는 0 이상의 양의 정수 값을 가지고,
해당 정수 값이 position이 됩니다.
Elements는 한 개 이상 존재할 수 있습니다.
Set : 유니크한 elements의 collection 입니다.
중복이 없는 오브젝트 그룹입니다.
예를들면 알파벳은 글자의 Set 입니다.
Map : Key-Value 쌍을 가지는 collection입니다.
(dictionary 라고도 한다네요.)
Keys 들은 유니크한 값들이며
각 Key에는 하나의 Value들이 반드시 존재합니다.
Value는 중복될 수 있습니다.
==========================================
Collection Types
: Kotlin Starndard Library 는 sets, lists and maps 에 대한 인터페이스를 제공합니다.
- 읽기 전용 인터페이스는 collection 요소에 접근할 수 있도록 제공합니다.
- mutable 인터페이스는 읽기 전용 인터페이스를 상속받아
쓰기 작업도 할 수 있게 제공합니다. ( adding, removing, updating its elements)
mutable collection 이라고 해서 꼭 var 를 사용할 필요는 없습니다.
val을 사용해도 됩니다. 하지만 val 로 선언한 mutable collection에 새로운 값을
할당하려 한다면 당연하게도 컴파일 에러가 발생합니다.
package com.example.kotlinplayground
fun main() {
val numbers = mutableListOf("one", "two", "three", "four")
numbers.add("five") // element 의 추가는 가능합니다.
//numbers = mutableListOf("six", "seven") // 컴파일에러
}
읽기전용 collection 타입은 covariant(공변하는) 합니다.
이 말은 Shape라는 클래스를 상속받는 Rectangle 클래스가 있다면,
List<Shape>가 사용되는 모든 곳에
List<Rectangle>을 사용할 수 있습니다.
다른 말로, collection 타입은
elements 타입과 동일한 하위 관계를 가집니다.
Map의 경우도 마찬가지이지만, Key 타입의 경우는 제외됩니다.
mutable collection의 경우는 covariant 하지 않습니다.
그렇지 않을 경우 런타임 에러가 발생합니다.
만약 MutableList<Shape> 의 하위 타입 MutableList<Rectangle>에 또 다른 하위 타입을 넣는다면 (e.g. Circle), Rectangle 타입 아규먼트를 위반하는 결과를 가져옵니다.
아래는 Kotlin collection interfaces 의 다이어그램입니다.
여기서 마치고, 다음 포스팅에서 Collection의 List, Set, Map 에 대해 공부합니다.
'코틀린(Kotlin)' 카테고리의 다른 글
코틀린 return should be lifted out of 'when' 노란 줄 해결하기 (0) | 2019.11.13 |
---|---|
코틀린(kotlin) : 코틀린의 Collections - List, Set, Map (0) | 2019.08.21 |
코틀린 Scope Functions[2] - [ let, run, with, apply, also ] 사용 예제 + takeIf, takeUnless (0) | 2019.07.16 |
코틀린 Scope Functions - [ let, run, with, apply, also ] (0) | 2019.07.16 |
이클립스에 코틀린 플러그인 설치하기 (0) | 2019.07.16 |