kotlin精讲-第5章(16)map集合-中

作者: 739c8d412b4c | 来源:发表于2017-12-06 17:05 被阅读136次

    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方法去获取,参考代码:

    相关文章

      网友评论

        本文标题:kotlin精讲-第5章(16)map集合-中

        本文链接:https://www.haomeiwen.com/subject/usdlixtx.html