一、什麼是Kotlin Mapof
val map: Map<String, String> = mapOf("key1" to "value1", "key2" to "value2")
Kotlin中的MapOf是一個不可變的map(只讀),其中包含一組鍵值對,可以使用該組進行查詢、插入、刪除和修改。在創建map的時候,可以直接使用mapOf函數或者使用to函數來創建一個Map對象。其中,to函數實際上是通過使用一個中綴符號來創建一個鍵值對。
二、Kotlin Mapof的特點
Kotlin中的MapOf是基於鍵值對的一種數據類型,具有以下特點:
1. 大小不固定
MapOf的大小可以在運行過程中動態變化,可以根據運行時的需求動態進行擴容或縮小。這就意味著,可以在運行時根據需要插入或刪除鍵值對元素。
2. 獨特的鍵
MapOf中的鍵是唯一的,每個鍵只能對應一個值。如果嘗試添加一個已經存在的鍵,則先前的值會被覆蓋。
3. 值可重複
雖然MapOf中的鍵必須唯一,但是值可以重複。也就是說,多個鍵可以同時關聯同一個值。
4. 不可變性
MapOf是只讀的,一旦創建就不能再進行修改。如果需要對MapOf進行修改,可以使用MutableMapOf類。
三、Kotlin Mapof的操作
1. 基本操作
(1)獲取Map中的值
//創建一個Map
val map = mapOf("key1" to "value1", "key2" to "value2")
//獲取Map中的值
val value1 = map["key1"]
val value2 = map.get("key2")
val value3 = map.getOrElse("key3") { "defaultValue" }
在Kotlin中,可以使用[]運算符或get函數獲取具有指定鍵的元素。如果給定的鍵在Map中不存在,則返回null值。如果需要設置默認值,則可以使用getOrElse函數。
(2)獲取Map中的鍵
//創建一個Map
val map = mapOf("key1" to "value1", "key2" to "value2")
//獲取Map中的鍵
val keys = map.keys
可以使用Map的keys屬性獲取Map中包含的所有鍵。
(3)遍歷Map
val map = mapOf("key1" to "value1", "key2" to "value2")
//遍歷Map
for ((key, value) in map) {
println("$key: $value")
}
可以使用for循環遍歷整個Map,也可以使用forEach高級函數或map函數進行遍歷操作。
2. 修改操作
(1)添加或修改鍵值對
//創建一個可變Map
val map = mutableMapOf("key1" to "value1", "key2" to "value2")
//添加或修改鍵值對
map["key3"] = "value3"
map.put("key4", "value4")
創建一個可變Map,可以使用mutableMapOf函數。添加或修改元素時,可以使用[]運算符或put函數。
(2)刪除鍵值對
//創建一個可變Map
val map = mutableMapOf("key1" to "value1", "key2" to "value2")
//刪除鍵值對
map.remove("key1")
map.clear()
可以使用remove函數來刪除指定鍵的元素。如果需要清空整個Map,則可以使用clear函數。
(3)改變鍵或值
//創建一個可變Map
val map = mutableMapOf("key1" to "value1", "key2" to "value2")
//改變鍵或值
map["key1"] = "newValue1"
map.keys.remove("key2")
map.values.remove("value1")
可以使用[]運算符來改變鍵或值。另一種修改方法是通過Map的keys或values屬性來刪除鍵或值。
四、Kotlin Mapof的應用
1. 計數器
fun countCharacters(input: String): Map<Char, Int> {
val result = mutableMapOf<Char, Int>()
for (char in input) {
result[char] = result.getOrDefault(char, 0) + 1
}
return result
}
可以使用MapOf來編寫一個簡單的字元計數器,該計數器將每個字元的出現次數映射到一個整數值。可以使用mutableMapOf函數創建一個可變Map對象。在循環遍歷字元串時,可以使用[]操作符或getOrDefault函數來添加或修改元素的計數器。
2. 緩存
class Cache<K, V> {
private val map = mutableMapOf<K, V>()
fun get(key: K): V? {
return map[key]
}
fun put(key: K, value: V) {
map[key] = value
}
}
MapOf在緩存相關的應用程序中也非常有用。下面的代碼演示了一個簡單的緩存實現,該實現在緩存中存儲一個鍵值對,以便下次更快地獲取該值。
3. 媒體庫
data class Song(val title: String, val artist: String)
fun findSongsByArtist(songs: List<Song>, artist: String): Map<String, List<Song>> {
val result = mutableMapOf<String, List<Song>>()
for (song in songs) {
val artistSongs = result.getOrDefault(song.artist, mutableListOf())
artistSongs.add(song)
result[song.artist] = artistSongs
}
return result
}
可以使用MapOf來編寫一個基於藝術家的媒體庫。對於一個具有標題和藝術家信息的歌曲列表,可以使用MapOf將歌曲按藝術家分組。可以使用mutableMapOf函數創建一個可變Map對象。在循環遍歷歌曲列表時,可以使用getOrDefault函數來獲取指定藝術家的歌曲列表。然後,可以將當前歌曲添加到歌曲列表中,並將更新的歌曲列表重新放回map中。最後,返回整個Map對象。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/279333.html