Collection(콜렉션)은 대부분의 프로그래밍 언어에 있는 자료구조입니다. 자바의 List, Map, Set 등을 Collection이라고 합니다. Collection은 Generic으로 구현이 되어 다양한 타입과 함께 사용될 수 있습니다.
코틀린의 Collection은 기본적으로 Mutable(변할 수 없는)과 Immutable(불변의)을 별개로 지원합니다. Mutable로 생성하면 추가, 삭제가 가능하지만, Immutable로 생성하면 수정이 안됩니다.
컬렉션에는 일반적으로 동일한 유형의 여러 개체 (이 숫자는 0 일 수도 있음)가 포함됩니다. 컬렉션의 개체를 elements 또는 items 이라고 합니다
List: index로 elements에 접근가능한 정렬 된 컬렉션 입니다. 순서가 중요하며 elements은 중복이 허용됩니다.
Set: elements 중복 허용이 안되는 모음입니다. 순서는 중요하지 않습니다.
Map: key-value에 집합입니다. 키는 고유하며 각 키는 정확히 하나의 값에 매핑됩니다. 값은 중복 될 수 있습니다.
Collection 유형
Immutable: 컬렉션 요소에 액세스하기위한 작업을 제공 하는 읽기 전용 인터페이스입니다.
Mutable: 쓰기 작업(elements 추가, 삭제 및 변경)으로 해당 읽기 외에 확장 및 변경 가능한 인터페이스입니다
Mutable 컬렉션을 변경한다고해서 반드시 변경되는 것은 아닙니다 val에 컬렉션 을 재 할당하려고 하면 컴파일 오류가 발생합니다.
val numbers = mutableListOf("one", "two", "three", "four")
numbers.add("five") // this is OK
//numbers = mutableListOf("six", "seven") // compilation error
다음은 Kotlin 컬렉션 인터페이스의 다이어그램입니다.
인터페이스 구현Permalink
ListPermalink
목록 elements(null 포함)는 중복 될 수 있습니다. 목록에는 동일한 개체 또는 단일 개체의 항목이 얼마든지 포함될 수 있습니다. 두 목록의 크기가 같고 동일한 위치에 구조적으로 동일한 요소 가 있으면 동일한 것으로 간주됩니다 .
Immutable: Kotlin의 List는 기본적으로 Immutable방식이며 get만 가능합니다.
val numbers = listOf("one", "two", "three", "four")
numbers[3]
Mutable: mutableListOf(), arrayListOf()가 있으며 추가, 삭제 및 변경이 가능합니다.
val numbers = mutableListOf(1, 2, 3, 4)
numbers.add(5)
numbers.removeAt(1)
numbers[0] = 0
numbers.shuffle()
SetPermalink
고유 한 요소를 저장합니다. 그들의 순서는 일반적으로 정의되지 않습니다. null요소도 고유합니다.
Immutable:
val numbers = setOf<Int>(1, 2, 3, 4, 5, 6)
numbers.size
numbers.contains(1)
numbers.isEmpty()
val empty = emptyList<String>() //Empty Collection
Mutable: mutableSetOf, hashSetOf, linkedSetOf, sortedSetOf 등의 함수가 있습니다.
val numbers = mutableSetOf<Int>(1, 2, 3, 4, 5, 6)
numbers.add(10)
numbers.remove(4)
numbers.removeIf({ it < 3 })
MapPermalink
Collection인터페이스의 상속자가 아닙니다. 그러나 Kotlin Collection 유형 이기도합니다. Map는 키-값 (또는 elements)을 저장 합니다. 키는 고유하지만 다른 키 들은 동일한 값으로 쌍을 이룰 수 있습니다.
Immutable:
val numbersMap = mapOf("key1" to 1, "key2" to 2, "key3" to 3, "key4" to 1)
if ("key2" in numbersMap)
if (1 in numbersMap.values)
numbersMap.containsValue(1)
Mutable: mutableMapOf, hashMapOf, linkedMapOf, sortedMapOf 등의 함수가 있습니다.
val numbersMap = mutableMapOf("one" to 1, "two" to 2)
numbersMap.put("three", 3)
numbersMap["one"] = 11
'안드로이드 > 정리(Android)' 카테고리의 다른 글
(Android) Glide란 무엇인가? (0) | 2022.02.03 |
---|---|
(Android) RecyclerView의 성능 개선 정리 (0) | 2022.01.26 |
(Android) Handler란 무엇일까? (0) | 2022.01.13 |
(코틀린 kotlin) LayoutInflater란 무엇일까 (0) | 2022.01.11 |
(Android) 개발 필수 스택 (0) | 2021.12.18 |