在Kotlin中,Map是一种特殊类型的集合,用于存储键值对。使用Map可以方便地通过键来检索和存储值。
1.创建Map
使用mapOf函数创建不可变的Map。可以通过两种方式初始化键值对:使用to函数或Pair对象。例如:
val map = mapOf("Tom" to 18, "Jerry" to 12, "Jack" to 20)
// 或者
val map2 = mapOf(Pair("Tom", 18), Pair("Jerry", 12), Pair("Jack", 20))
使用mutableMapOf
函数创建可变的Map
,以便后续添加、修改或删除键值对。例如:
val numbersMap = mutableMapOf("one" to 1, "two" to 2, "three" to 3)
2.访问和修改Map中的元素
使用方括号[]运算符通过键访问对应的值。如果键不存在,返回null。例如:
val value = map["Tom"] // 如果"Tom"存在于map中,则value将被赋值为18
使用put方法添加或修改键值对。如果键已存在,则更新其对应的值;否则,添加新的键值对。例如:
numbersMap.put("four", 4) // 如果"four"不存在,则添加;如果已存在,则更新其值
使用putAll方法一次性添加多个键值对。这可以接受一个Map或一组Pair作为参数。例如:
numbersMap.putAll(mapOf("five" to 5, "one" to 10)) // 将多个键值对添加到map中
3.遍历Map
使用for-in循环遍历Map的键值对。例如:
for ((key, value) in map) {println("Key: $key, Value: $value")
}
使用entries属性获取一个包含所有键值对的集合,然后遍历这个集合。例如:
for (entry in map.entries) {println("Key: ${entry.key}, Value: ${entry.value}")
}
4.Map的方法
containsKey(key: K):检查Map是否包含指定的键。
containsValue(value: V):检查Map是否包含指定的值。
size:返回Map中的键值对数量。
isEmpty:检查Map是否为空。
clear():清除Map中的所有条目。
remove(key: K):删除指定的键及其对应的值,如果键不存在则不执行任何操作。例如:
if (map.containsKey("Tom")) {map.remove("Tom") // 删除键为"Tom"的条目(如果存在)
}
实例代码:
//callid 是String的参数,callDataBean是数据实体参数
//使用put方法添加或修改键值对。如果键已存在,则更新其对应的值;否则,添加新的键值对
private var mCallInfoMap : MutableMap<K, V> = mutableMapOf<K, V>()
private val mCallActiveTimeMap : MutableMap<String, Long> = HashMap()//每次都把新的callInfo数据实体更新mCallInfoMap.put(callid,callDataBean)//如果state为7 8 则移除该数据for((callid, callDataBean) in mCallInfoMap){if(callDataBean.state == 7 || callDataBean ==8){mCallInfoMap.remove(callid)}}//当state 为 1时 ,记录开始通话时间for (entry in mCallInfoMap.entries) {println("Key: ${entry.key}, Value: ${entry.value}")if(entry.state == 1){//如果没有包含这个callid,则添加他的activetimeif(!mCallActiveTimeMap.containsKey(callid)){ mCallActiveTimeMap.put(callid,activeTime)}}}/*********************分割线 以下方法仅供参考*********************///取出开始通话时间mCallActiveTimeMap[callid]//清除通话时间mCallActiveTimeMap.remove[callid]// 遍历Map集合map.forEach { key, value ->println("键: $key, 值: $value")}
参考:
Kotlin-Map