Map,MutableMap

to函式

to區分key與value。

以下是to函式原始碼,傳回值是一個Pair的類別。

1
public infix fun <A, B> A.to(that: B): Pair<A, B> = Pair(this, that)

也就是說,以下是在呼叫to的函式,傳回Pair,Pair再放入Map中,Map裡存放的都是Pair。

1
"Alice" to 18

Pair

可透過first與second取值

1
2
val pair = Pair<String, Int>("Alex", 12)
println("first = ${pair.first} second = ${pair.second}")
first = Alex second = 12

唯讀Map

以下key是姓名與value是年齡。

1
2
3
4
5
6
val map1 = mapOf(
    "Alice" to 18,
    "Alex" to 20,
    "Momo" to 5,
    "Yoyo" to 8
)

使用Pair,以下等同上面。

1
2
3
4
5
6
val map3 = mapOf(
    Pair("Alice", 18),
    Pair("Alex", 20),
    Pair("Momo", 5),
    Pair("Yoyo", 8)
)

可讀寫MutableMap

1
2
3
4
5
6
val mutableMap = mutableMapOf(
    "Alice" to 18,
    "Alex" to 20,
    "Momo" to 5,
    "Yoyo" to 8
)

讀取

  • [key] 沒有鍵\/值,系統就會傳回null。
  • get(key) 沒有鍵\/值,系統就會傳回null。
  • getOrDefault(“Momo”, 0) 沒有鍵\/值就傳回預設值。
  • getOrElse(“Yoyo”) {0} 沒有鍵\/值就傳回預設值。
1
2
3
4
5
6
7
8
val mutableMap = mutableMapOf(
    "Alice" to 18,
    "Alex" to 20,
)
println("Alice age = ${mutableMap["Alice"]}")
println("Alex age = ${mutableMap.get("Alex")}")
println("Momo age = ${mutableMap.getOrDefault("Momo", 0)}")
println("Yoyo age = ${mutableMap.getOrElse("Yoyo") {0}}")
Alice age = 18
Alex age = 20
Momo age = 0
Yoyo age = 0

遍歷

1
2
3
4
5
6
7
8
9
val mutableMap = mutableMapOf(
    "Alice" to 18,
    "Alex" to 20,
    "Momo" to 5,
    "Yoyo" to 8
)
mutableMap.forEach{
    println("key = ${it.key} , value = ${it.value}")
}    
key = Alice , value = 18
key = Alex , value = 20
key = Momo , value = 5
key = Yoyo , value = 8
1
2
3
mutableMap.forEach { key, value ->
    println("key = $key , value = $value")
}

新增

1
2
3
4
5
6
7
8
9
val mutableMap = mutableMapOf(
    "Alice" to 18,
    "Alex" to 20,
    "Momo" to 5,
    "Yoyo" to 8
)
mutableMap += "Bob" to 10
mutableMap.put("Ray", 25)
println(mutableMap)
{Alice=18, Alex=20, Momo=5, Yoyo=8, Bob=10, Ray=25}

沒有這個key,才新增,執行結果發現Momo仍是5歲,不是12歲。

1
2
mutableMap.getOrPut("Elsa") { 12 }
mutableMap.getOrPut("Momo") { 12 }
{Alice=18, Alex=20, Momo=5, Yoyo=8, Bob=10, Ray=25, Elsa=12}

修改

1
2
mutableMap[key] = value
mutableMap["Momo"] = 10

刪除

1
2
mutableMap.remove(key)
mutableMap.remove("Momo")

results matching ""

    No results matching ""