
在 Kotlin 中没有实现和 Java 一样的 List 集合,而是使用了和 Java 一样的 ArrayList 集合。Kotlin 中提供了以下四种函数方法来使用 ArrayList,分别是
1、listOf() 2、listOfNotNull() 3、mutableListOf() 4、arraylistOf()
其中最主要的区别为可变的集合与不可变的集合。listOf()、listOfNotNull() 为不可变集合,mutableListOf()、arraylistOf()为可变集合。
var list = listOf("A", "B", "C") Log.e("TEST", list.toString())
输出:[A, B, C]
var list2 = listOf(null) Log.e("TEST", list2.toString())
输出:[null]
var list = listOfNotNull("A", "B", "C", null) Log.e("TEST", list.toString())
输出:[A, B, C]
var list2 = listOfNotNull(null) Log.e("TEST", list2.toString())
输出:[]
var list = mutableListOf("A", "B", "C", null) Log.e("TEST", list.toString())
输出:[A, B, C, null]
var list2 = mutableListOf(null) Log.e("TEST", list2.toString())
输出:[null]
var list = arrayListOf("A", "B", "C", null) Log.e("TEST", list.toString())
输出:[A, B, C, null]
var list2 = arrayListOf(null) Log.e("TEST", list2.toString())
输出:[null]
总结:可以看到以上不同的 ArrayLit 创建时加入 null 值,在 listOfNotNull() 中是不能输出的。所以可以在不能加入 null 的 List 中使用 listOfNotNull()。
在 Kotlin 中 ArrayList 的索引也是从0开始计算的。
var list = mutableListOf("A", "B", "C") for (i in 0 until list.size){ Log.e("TEST", "list: " + list.get(i)) }
输出:[A B C]
var list = mutableListOf("A", "B", "C") println(list.subList(1, 2))
输出:[B] 使用子集时一定要注意索引号,防止 IndexOutOfBoundsException 数组溢出。例子中对应的 subList 源码如下:
override fun subList(fromIndex: Int, toIndex: Int): MutableList
因在 Kotlin 的 ArrayList 提供的函数中存在可变集合和不可变集合的概念,所以并不是所有的 ArrayList 都支持修改元素。mutableListOf()、arraylistOf()是支持可变集合的。此处所讲述的修改 ArrayList 就是代表增、删、改。
插入元素以下代码实例主要是指在对应的 index 位置插入新的元素。
var list = mutableListOf("A", "C") Log.e("TEST", list.toString()) list.add(1, “B") Log.e("TEST", list.toString())
原 list 输出:[A, C] 插入数据输出:[A, B, C]
其中 add 的源码如下:
public fun add(index: Int, element: E): Unit
删除对应的 index 位置元素。
var list = mutableListOf("A", "B", "C") Log.e("TEST", list.toString()) list.removeAt(1) Log.e("TEST", list.toString())
原 list 输出:[A, B, C] 删除数据后输出:[A, C]
其中 removeAt 的源码如下:
public fun removeAt(index: Int): E
修改对应的 index 位置元素。
var list = mutableListOf("A", "B", "C") Log.e("TEST", list.toString()) list[1] = "A" Log.e("TEST", list.toString())
原 list 输出:[A, B, C] 修改数据后输出:[A, A, C]
分 享 简 洁、有趣
有 力 度 的 事 情

欢迎关注我的公众号,我会分享更多的原创文章,关于技术、关于感悟。
推荐阅读:
Blog-07-《一周快速上手Kotlin For Android》-之数组