list集合介绍
list集合怎么定义呢?从概念角度去理解,list集合也叫list列表,存储的元素有序可重复。有序,就是存储的位置是固定的,谁先存储顺序就越靠前;可重复,可以存储重复数据;从代码角度去理解, list由List接口和List接口的实现类组成。
List接口常用的实现类有哪些? ArrayList、LinkedList和MutableList。
list集合可以存储什么类型数据呢? list集合可以存储各种类型数据。可以存储诸如Int、Double、String等基本数据类型,也可以存储其他自定义对象类型,比如自定义的学生Student。
list集合4种创建方式
在Kotlin中创建list集合有4种方式,4种方式可以分为两类,一类是通过构造方法方法创建list集合。另外一种,是通过Kotlin给我们封装好的方法创建list集合。如下表格,我们将这四种方式列举了出来。
创建list集合方法 | 返回值类型 | 是否可写 |
---|---|---|
通过List构造方法创建 | List | 否 |
listOf()方法 | List | 否 |
arrayListOf()方法 | ArrayList | 是 |
mutableListOf()方法 | MutableList | 是 |
我们可以直接看4种方式的对应方法的方法签名,重点看返回值,方法体的部分我直接去掉了,对应的源码如下:
作为了解,可以通过翻看源码得知4种创建集合方式上的细微差别,有的是通过Java里面的ArrayList创建,有的是通过asList方法转换为的集合。这个意义不是很大。
更重要的需要知道,通过List接口构造方法和listOf方法创建的集合是不可写的,通过arrayListOf方法和mutableListOf方法创建的集合是可写的。具体使用的时候,忘记是否可写怎么办?只需要点进去看看方法的返回值即可,返回List不可写,返回ArrayList、MutableList则可写。或者,看每个方法的注释,返回只读的list集合,会出现“read-only list”字样。比如看List接口构造方法创建集合的注释:
还有就是,如何集合元素很有规律的时候,用List的构造方法创建,比如元素是[1,2,3、4]、[1,2,4,8] 、[1,3,6,9]。listOf方法、arrayListOf方法、mutableListOf方法,创建集合的时候只需要往里面扔具体的元素就可以了。
我们通过代码演示集合的四种创建方式:
针对以上代码难理解一点的可能就是第2行,通过List接口构造方法创建list集合,这里涉及到了Lambda表达式。这个可以稍微放一放,学习完Lambda表达式之后在回过头来看。并且,确实,这种创建方式用的相对较少。
List集合的可写性验证以及转换
我们通过代码验证集合是否可写,先验证集合可写,参考代码:
我们在验证集合不可写,参考代码:
但是,不可写集合可以通过totoMutableList转换为可写集合,然后在进行写操作,参考代码:
list集合数据可重复
list集合中的元素可重复,是list相对于set的一个重要特点。同时,list集合中可以存储null元素,我们通过一个案例验证下list集合可以包含重复代码,参考代码:
list集合遍历
前面我们学习了区间的遍历,数组的遍历。那如何遍历list集合呢?list集合的遍历和数组的遍历一样。
也就是list集合在遍历的时候,可以普通的for循环,还可以for循环的时候调用withIndex方法,参考代码:
当然,还可以通过高阶函数进行遍历操作,这个我们后续再去讲解。
网友评论