<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ### map集合常見方法和屬性 集合可以理解為是一個容器,容器操作我們自然想到“增刪改查”,但是需要注意可寫集合才有“增刪改查”,不可寫集合只有“查”。 #### 添加元素:put、putAll 添加元素,主要有如下幾種方式: 使用put方法直接追加元素,方法簽名如下: ```java public fun put(key: K, value: V): V? ``` 使用putAll方法批量添加集合,無返回值,方法簽名如下: ```java public fun putAll(from: Map<out K, V>): Unit ``` 使用putAll方法批量添加數組,無返回值,方法簽名如下: ```java public fun <K, V> MutableMap<in K, in V>.putAll(pairs: Iterable<Pair<K,V>>): Unit { for ((key, value) in pairs) { put(key, value) } } ``` 上面的方法,我們編寫一個案例,驗證下,參考代碼: ~~~ fun main(args: Array<String>) { val map = mutableMapOf<String, Int>( "佳佳" to 1, "巧巧" to 2, "依依" to 3) //追加元素 map.put("玲玲", 4) println(map) //批量添加一個map map.putAll(mapOf("婷婷" to 5)) println(map) //批量添加一個array map.putAll(listOf(Pair("貝貝", 6))) println(map) } ~~~ 運行結果 ``` {佳佳=1, 巧巧=2, 依依=3, 玲玲=4} {佳佳=1, 巧巧=2, 依依=3, 玲玲=4, 婷婷=5} {佳佳=1, 巧巧=2, 依依=3, 玲玲=4, 婷婷=5, 貝貝=6} Process finished with exit code 0 ``` #### 刪除元素:remove 刪除元素,主要有如下幾種方式: 使用remove方法按照key刪除,成功返回key對應的value,否則返回null,方法簽名如下: ```java public fun remove(key: K): V? ``` 使用remove方法按照key-value,成功返回true,否則返回false,方法簽名如下: ```java public fun remove(key: K, value: V): Boolean { // See default implementation in JDK sources return true } ``` 我們編寫一個案例,驗證下上面這些方法,參考代碼: ~~~ fun main(args: Array<String>) { val map = mutableMapOf<String, Int>( "佳佳" to 1, "巧巧" to 2, "依依" to 3, "婷婷" to 4) println("--------按照key刪除鍵值對--------") val value=map.remove("佳佳") println(map) println("鍵 佳佳 對應的value:${value}") println("--------按照key-map刪除鍵值對--------") var isRemove=map.remove("巧巧",3) println(map) println("key:巧巧 value:3 刪除鍵值對成功:${isRemove}") println("--------按照key-map刪除鍵值對--------") isRemove=map.remove("巧巧",2) println(map) println("key:巧巧 value:2 刪除鍵值對成功:${isRemove}") } ~~~ 運行結果 ``` --------按照key刪除鍵值對-------- {巧巧=2, 依依=3, 婷婷=4} 鍵 佳佳 對應的value:1 --------按照key-map刪除鍵值對-------- {巧巧=2, 依依=3, 婷婷=4} key:巧巧 value:3 刪除鍵值對成功:false --------按照key-map刪除鍵值對-------- {依依=3, 婷婷=4} key:巧巧 value:2 刪除鍵值對成功:true Process finished with exit code 0 ``` #### 修改元素:set、下標修改 集合的修改,可以通過set方法、下標操作,在Java里面是不可以通過下標操作的,Kotlin中支持下標修改集合。至于下標訪問的原理,后面學了操作符重載之后就明白了,在這里,我們可以先把握使用。 當然,還可以通過put方法,去覆蓋元素,之前正經經過put方法的使用,這里不再細說。 我們看看set方法的方法簽名: ```java public inline operator fun <K, V> MutableMap<K, V>.set(key: K, value: V): Unit { put(key, value) } ``` 這里估計大家不懂的就是“operator”這個關鍵字是什么意思。這個到后期講解操作符重載就知道了。 我們通過一個案例,來看看集合的修改操作,參考代碼: ~~~ fun main(args: Array<String>) { val map = mutableMapOf<String, Int>( "依依" to 3, "婷婷" to 4) //set修改元素,修改下標 //修改指定位置元素,通過set方法 map.set("依依", 1) println(map) //修改指定位置元素,通過下標 map["婷婷"] = 2 println(map) } ~~~ 運行結果 ``` {依依=1, 婷婷=4} {依依=1, 婷婷=2} Process finished with exit code 0 ``` #### 查詢元素:get、getOrDefault、getValue、下標 集合的查詢,要通過get、getOrDefault 、getOrNull方法以及下標操作。在Java里面是不可以通過下標操作的,Kotlin中支持下標修改集合。至于下標訪問的原理,后面學了操作符重載之后就明白了,在這里,我們可以先把握使用。 get方法,根據key返回value,方法簽名如下: ```java public operator fun get(key: K): V? ``` 同set方法,get方法的申明上也有一個“operator”。 getOrDefault方法,根據key返回value,沒有對應的value,返回默認值。方法簽名如下: ```java public fun getOrDefault(key: K, defaultValue: @UnsafeVariance V): V { // See default implementation in JDK sources return null as V } ``` getValue方法,根據key返回value,沒有對應的value,拋異常。方法簽名如下: ```java public fun <K, V> Map<K, V>.getValue(key: K): V = getOrImplicitDefault(key) ``` 我們通過一個案例,來看看集合的查詢操作,參考代碼: ~~~ fun main(args: Array<String>) { val map = mutableMapOf<String, Int>( "佳佳" to 1, "巧巧" to 2, "依依" to 3, "婷婷" to 4) println("--------查詢元素--------") //通過get方法 println(map.get("佳佳")) //通過下標 println(map["巧巧"]) //getOrDefault,沒有對應的value,返回默認值 println(map.getOrDefault("靜靜", 100)) //通過getValue方法,沒有對應的value,就拋出異常 println(map.getValue("冪冪")) } ~~~ 運行結果 ``` --------查詢元素-------- 1 2 100 Exception in thread "main" java.util.NoSuchElementException: Key 冪冪 is missing in the map. at kotlin.collections.MapsKt__MapWithDefaultKt.getOrImplicitDefaultNullable(MapWithDefault.kt:24) at kotlin.collections.MapsKt__MapsKt.getValue(Maps.kt:294) at day03.MapDemo9Kt.main(MapDemo9.kt:31) Process finished with exit code 1 ``` #### 是否包含元素:contains、containsKey、containsValue 判斷元素是否包含,map集合提供了contains、containsKey、containsValue方法。 contains方法,是否包含key,接收元素key,返回Boolean類型,方法定義如下: ```java public inline operator fun <@kotlin.internal.OnlyInputTypes K, V> Map<out K, V>.contains(key: K) : Boolean = containsKey(key) ``` containsKey方法,,是否包含key,接收元素key,返回Boolean類型,方法定義如下: ```java public fun containsKey(key: K): Boolean ``` containsValue方法,是否包含key,接收元素value,返回Boolean類型,方法定義如下: ```java public fun containsValue(value: @UnsafeVariance V): Boolean ``` 我們通過一個案例,來看看集合的原始是否包含操作,參考代碼: ~~~ fun main(args: Array<String>) { val map = mutableMapOf<String, Int>( "佳佳" to 1, "巧巧" to 2, "依依" to 3, "婷婷" to 4) println("--------是否包含元素--------") //是否包含key,contains println(map.contains("佳佳")) //是否包含key,containsKey println(map.containsKey("靈靈")) //是否包含value,containsValue println(map.containsValue(1)) println(map.containsValue(5)) } ~~~ 運行結果 ``` --------是否包含元素-------- true false true false Process finished with exit code 0 ``` #### 獲取數組長度: size屬性、count方法 同數組,獲取長度可以通過size屬性和count方法去獲取,參考代碼: ~~~ fun main(args: Array<String>) { val map = mutableMapOf<String, Int>( "佳佳" to 1, "巧巧" to 2, "依依" to 3, "婷婷" to 4) println("--------獲取集合的長度--------") println("集合長度是:${map.size}") println("集合長度是:${map.count()}") } ~~~ 運行結果 ``` --------獲取集合的長度-------- 集合長度是:4 集合長度是:4 Process finished with exit code 0 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看