kotlin精讲-第5章(10)list-中

作者: 739c8d412b4c | 来源:发表于2017-12-06 15:35 被阅读175次

list集合常见方法和属性

集合可以理解为是一个容器,容器操作我们自然想到“增删改查”,但是需要注意可写集合才有“增删改查”,不可写集合只有“查”。

添加元素:add、all

添加元素,主要有如下几种方式:

使用add方法直接追加元素,返回添加成功与否,方法签名如下:

overridefun add(element:E): Boolean

使用add方法在指定位置添加元素,无返回值,方法签名如下:

publicfun add(index:Int, element: E): Unit

使用addAll方法批量添加集合,返回添加成功与否,方法签名如下:

overridefun addAll(elements:Collection<E>): Boolean

使用addAll方法批量添加数组,返回添加成功与否,方法签名如下:

publicfun <T> MutableCollection<in T>.addAll(elements:Array<out T>): Boolean

使用addAll方法在指定位置批量添加元素,返回添加成功与否,addAll方法的方法签名如下:

publicfun addAll(index:Int, elements: Collection<E>): Boolean

上面的方法,我们编写一个案例,验证下,参考代码:

删除元素:remove、removeAt

删除元素,主要有如下几种方式:

我们编写一个案例,验证下上面这些方法,参考代码:

修改元素:set、下标

集合的修改,要通过set方法和下标操作,在Java里面是不可以通过下标操作的,Kotlin中支持下标修改集合。至于下标访问的原理,后面学了操作符重载之后就明白了,在这里,我们可以先把握使用。

我们看看set方法的方法签名:

这里估计大家不懂的就是“operator”这个关键字是什么意思。这个到后期讲解操作符重载就知道了。

我们通过一个案例,来看看集合的修改操作,参考代码:

查询元素:get、getOrNull

集合的修改,要通过get、getOrNull方法,下标操作。在Java里面是不可以通过下标操作的,Kotlin中支持下标修改集合。至于下标访问的原理,后面学了操作符重载之后就明白了,在这里,我们可以先把握使用。

get方法,根据位置返回元素,方法签名如下:

同set方法,get方法的申明上也有一个“operator”。

getOrNull方法,也是根据位置返回元素,如果获取不到元素的时候,返回null,方法签名如下:

publicfun <T> List<T>.getOrNull(index: Int): T? {

    return if (index >= 0 && index <= lastIndex) get(index) else null

}

我们通过一个案例,来看看集合的查询操作,参考代码:

是否包含元素:contains方法

   判断元素是否包含,list集合提供了contains方法和containsAll方法。

contains方法用于判断集合中是否存包含某个元素,方法接收参数为元素,返回值Boolean类型,方法定义如下:

contains(element: T): Boolean

contains方法用于判断集合中是否存包含多个元素,方法接收一个集合,返回值Boolean类型,方法定义如下:

override fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean

我们通过一个案例,来看看集合的原始是否包含操作,参考代码:

获取元素索引:indexOf方法

indexOf()获取元素对应的位置,从集合开始位置开始查找,找到返回索引,没有找到返回-1。方法签名如下:

public fun indexOf(element: @UnsafeVarianceE): Int

lastIndexOf获取元素对应的位置,从集合结束位置开始查找,找到返回索引,没有找到返回-1。方法签名如下:

public fun lastIndexOf(element: @UnsafeVariance E): Int

我们通过一个案例,来看看集合的是否包含,参考代码:

获取数组长度:size属性、count方法

同数组,获取长度可以通过size属性和count方法去获取,参考代码:

相关文章

网友评论

    本文标题:kotlin精讲-第5章(10)list-中

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