일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- function
- text
- pushnamed
- 다트
- 웹크롤러
- Flutter
- List
- Class
- animation
- Android
- variable
- Yocto
- 콜렉션
- crawler
- Collection
- ML
- 코틀린
- DART
- kotlin
- 크롤러
- python
- textstyle
- 클래스
- set
- 플러터
- import
- 파이썬
- map
- 함수
- package
- Today
- Total
조용한 담장
코틀린(Kotlin) Collections : Map Specific Operations 본문
코틀린의 collection 의 Map Specific Operations 에 대해 살펴보자.
원문 https://kotlinlang.org/docs/reference/map-operations.html 을 보며 정리.
Retrieving keys and values
[ ]
val numbersMap = mapOf("one" to 1, "two" to 2, "three" to 3)
println(numbersMap.get("one")) // 1
println(numbersMap["one"]) // 1
println(numbersMap.getValue("two")) // 2
println(numbersMap.getOrDefault("four", 10)) // 10
println(numbersMap.getOrElse("four") { 10 }) // 10
println(numbersMap["five"]) // null
//numbersMap.getValue("six") // exception!
keys: a set of all map keys.
values: a collection of all map values.
val numbersMap = mapOf("one" to 1, "two" to 2, "three" to 3)
println(numbersMap.keys) // [one, two, three]
println(numbersMap.values) // [1, 2, 3]
Filtering
val numbersMap = mapOf("key1" to 1, "key2" to 2, "key3" to 3, "key11" to 11)
val filteredMap = numbersMap.filter { (key, value) -> key.endsWith("1") && value > 10}
println(filteredMap) // {key11=11}
val numbersMap = mapOf("key1" to 1, "key2" to 2, "key3" to 3, "key11" to 11)
val filteredKeysMap = numbersMap.filterKeys { it.endsWith("1") }
val filteredValuesMap = numbersMap.filterValues { it < 10 }
println(filteredKeysMap) // {key1=1, key11=11}
println(filteredValuesMap) // {key1=1, key2=2, key3=3}
plus and minus operators
plus (+)
오른쪽 피연산자의 key/value 가 왼쪽 피연산자 Map 에 존재하면 오른쪽 피연산자의 것을 가진 맵을 결과로 만든다.
val numbersMap = mapOf("one" to 1, "two" to 2, "three" to 3)
println(numbersMap + Pair("four", 4)) // {one=1, two=2, three=3, four=4}
println(numbersMap + Pair("one", 10)) // {one=10, two=2, three=3}
println(numbersMap + mapOf("five" to 5, "one" to 11)) // {one=11, two=2, three=3, five=5}
minus (-)
왼쪽 피연산자인 Map 에서 오른쪽 피연산자가 가지는 key 를 제외한 Map 을 생성한다.
오른쪽 피연산자는 하나 혹은 그 이상의 key 를 가지는 collection 이 올 수 있다.
val numbersMap = mapOf("one" to 1, "two" to 2, "three" to 3)
println(numbersMap - "one") // {two=2, three=3}
println(numbersMap - listOf("two", "four")) // {one=1, three=3}
Map write operations
Mutable Map 의 write operation 의 두가지 룰:
-
value 는 업데이트 될 수 있다. key 는 변경되지 않는다: 한번 추가된 entry 의 key 는 변하지 않는다.
-
각각의 모든 key 는 한개의 value 와 엮어진다. entry 자체를 더하거나 뺄수 있다.
Adding and updating entries
기본 LinkedHashMap 은 마지막 위치에 entry 를 추가하지만 order 정의에 따라 위치는 다르다.
val numbersMap = mutableMapOf("one" to 1, "two" to 2)
numbersMap.put("three", 3)
println(numbersMap) // {one=1, two=2, three=3}
argument 는 Map 또는 Iterable, Sequence, Array 로 구성된 Pair 들이 올 수 있다.
val numbersMap = mutableMapOf("one" to 1, "two" to 2, "three" to 3)
numbersMap.putAll(setOf("four" to 4, "five" to 5))
println(numbersMap) // {one=1, two=2, three=3, four=4, five=5}
numbersMap.putAll(listOf(Pair("six", 6), Pair("seven", 7 )))
println(numbersMap) // {one=1, two=2, three=3, four=4, five=5, six=6, seven=7}
put() 과 putAll() 모두 이미 존재하는 key 의 value 를 덮어쓴다.
val numbersMap = mutableMapOf("one" to 1, "two" to 2)
val previousValue = numbersMap.put("one", 11)
println("value associated with 'one', before: $previousValue, after: ${numbersMap["one"]}")
println(numbersMap)
// output:
// value associated with 'one', before: 1, after: 11
// {one=11, two=2}
plusAssign (+=)
[ ]
val numbersMap = mutableMapOf("one" to 1, "two" to 2)
numbersMap["three"] = 3 // calls numbersMap.put("three", 3)
numbersMap += mapOf("four" to 4, "five" to 5)
println(numbersMap) // {one=1, two=2, three=3, four=4, five=5}
Removing entries
val numbersMap = mutableMapOf("one" to 1, "two" to 2, "three" to 3)
numbersMap.remove("one")
println(numbersMap) // {two=2, three=3}
numbersMap.remove("three", 4) //doesn't remove anything
println(numbersMap) // {two=2, three=3}
keys, values
val numbersMap = mutableMapOf("one" to 1, "two" to 2, "three" to 3, "threeAgain" to 3)
numbersMap.keys.remove("one")
println(numbersMap) // {two=2, three=3, threeAgain=3}
numbersMap.values.remove(3)
println(numbersMap) // {two=2, threeAgain=3}
minusAssign (-=)
val numbersMap = mutableMapOf("one" to 1, "two" to 2, "three" to 3)
numbersMap -= "two"
println(numbersMap) // {one=1, three=3}
numbersMap -= "five" //doesn't remove anything
println(numbersMap) // {one=1, three=3}
'kotlin' 카테고리의 다른 글
Google: Android Basics in Kotlin (0) | 2020.07.28 |
---|---|
The ins and outs of Kotlin (0) | 2020.07.28 |
코틀린(Kotlin) Collections : Set Specific Operations (0) | 2020.05.07 |
코틀린(Kotlin) Collections : List Specific Operations (0) | 2020.05.07 |
코틀린(Kotlin) Collections : Write Operations (0) | 2020.04.14 |