map集合常见方法和属性
集合可以理解为是一个容器,容器操作我们自然想到“增删改查”,但是需要注意可写集合才有“增删改查”,不可写集合只有“查”。
添加元素:put、putAll
添加元素,主要有如下几种方式:
使用put方法直接追加元素,方法签名如下:
public fun put(key: K, value: V): V?
使用putAll方法批量添加集合,无返回值,方法签名如下:
public fun putAll(from: Map<out K, V>): Unit
使用putAll方法批量添加数组,无返回值,方法签名如下:
public fun <K, V> MutableMap<in K, in V>.putAll(pairs: Iterable<Pair<K,V>>): Unit {
for ((key, value) in pairs) {
put(key, value)
}
}
上面的方法,我们编写一个案例,验证下,参考代码:
删除元素:remove
删除元素,主要有如下几种方式:
使用remove方法按照key删除,成功返回key对应的value,否则返回null,方法签名如下:
public fun remove(key: K): V?
使用remove方法按照key-value,成功返回true,否则返回false,方法签名如下:
public fun remove(key: K, value: V): Boolean {
// See default implementation in JDK sources
return true
}
我们编写一个案例,验证下上面这些方法,参考代码:
修改元素:set、下标修改
集合的修改,可以通过set方法、下标操作,在Java里面是不可以通过下标操作的,Kotlin中支持下标修改集合。至于下标访问的原理,后面学了操作符重载之后就明白了,在这里,我们可以先把握使用。
当然,还可以通过put方法,去覆盖元素,之前正经经过put方法的使用,这里不再细说。
我们看看set方法的方法签名:
public inline operator fun <K, V> MutableMap<K, V>.set(key: K, value: V): Unit {
put(key, value)
}
这里估计大家不懂的就是“operator”这个关键字是什么意思。这个到后期讲解操作符重载就知道了。
我们通过一个案例,来看看集合的修改操作,参考代码:
查询元素:get、getOrDefault、getValue、下标
集合的查询,要通过get、getOrDefault 、getOrNull方法以及下标操作。在Java里面是不可以通过下标操作的,Kotlin中支持下标修改集合。至于下标访问的原理,后面学了操作符重载之后就明白了,在这里,我们可以先把握使用。
get方法,根据key返回value,方法签名如下:
public operator fun get(key: K): V?
同set方法,get方法的申明上也有一个“operator”。
getOrDefault方法,根据key返回value,没有对应的value,返回默认值。方法签名如下:
public fun getOrDefault(key: K, defaultValue: @UnsafeVariance V): V {
// See default implementation in JDK sources
return null as V
}
getValue方法,根据key返回value,没有对应的value,抛异常。方法签名如下:
public fun <K, V> Map<K, V>.getValue(key: K): V = getOrImplicitDefault(key)
我们通过一个案例,来看看集合的查询操作,参考代码:
是否包含元素:contains、containsKey、containsValue
判断元素是否包含,map集合提供了contains、containsKey、containsValue方法。
contains方法,是否包含key,接收元素key,返回Boolean类型,方法定义如下:
public inline operator fun <@kotlin.internal.OnlyInputTypes K, V> Map<out K, V>.contains(key: K) : Boolean = containsKey(key)
containsKey方法,,是否包含key,接收元素key,返回Boolean类型,方法定义如下:
public fun containsKey(key: K): Boolean
containsValue方法,是否包含key,接收元素value,返回Boolean类型,方法定义如下:
public fun containsValue(value: @UnsafeVariance V): Boolean
我们通过一个案例,来看看集合的原始是否包含操作,参考代码:
获取数组长度:size属性、count方法
同数组,获取长度可以通过size属性和count方法去获取,参考代码:
网友评论