Blog-08-《一周快速上手Kotlin For Android》-之ArrayList

在 Kotlin 中没有实现和 Java 一样的 List 集合,而是使用了和 Java 一样的 ArrayList 集合。Kotlin 中提供了以下四种函数方法来使用 ArrayList,分别是

1、listOf()
2、listOfNotNull()
3、mutableListOf()
4、arraylistOf()

其中最主要的区别为可变的集合与不可变的集合。listOf()、listOfNotNull() 为不可变集合,mutableListOf()、arraylistOf()为可变集合。

一、创建不同 ArrayList
1.1 llistOf()

var list = listOf("A", "B", "C")
Log.e("TEST", list.toString())

输出:[A, B, C]

var list2 = listOf(null)
Log.e("TEST", list2.toString())

输出:[null]

1.2 listOfNotNull()

var list = listOfNotNull("A", "B", "C", null)
Log.e("TEST", list.toString())

输出:[A, B, C]

var list2 = listOfNotNull(null)
Log.e("TEST", list2.toString())

输出:[]

1.3 mutableListOf()

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]

1.4 arraylistOf()

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()。

二、获取 ArrayList 中的元素

在 Kotlin 中 ArrayList 的索引也是从0开始计算的。

2.1 循环遍历 ArrayList 元素

var list = mutableListOf("A", "B", "C")
for (i in 0 until list.size){
Log.e("TEST", "list: " + list.get(i))
}

输出:[A B C]

2.2 获取 ArrayList 指定的子集合

var list = mutableListOf("A", "B", "C")
println(list.subList(1, 2))

输出:[B]
使用子集时一定要注意索引号,防止 IndexOutOfBoundsException 数组溢出。例子中对应的 subList 源码如下:

override fun subList(fromIndex: Int, toIndex: Int): MutableList

三、修改 ArrayList 中的元素。

因在 Kotlin 的 ArrayList 提供的函数中存在可变集合和不可变集合的概念,所以并不是所有的 ArrayList 都支持修改元素。mutableListOf()、arraylistOf()是支持可变集合的。此处所讲述的修改 ArrayList 就是代表增、删、改。

3.1 插入元素

插入元素以下代码实例主要是指在对应的 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

3.2 删除元素

删除对应的 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

3.3 修改元素

修改对应的 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]


以上就是本篇文章所有内容。


分 享 简 洁、有趣
有 力 度 的 事 情

欢迎关注我的公众号,我会分享更多的原创文章,关于技术、关于感悟。
作者:林春风Ace


转载于:https://juejin.im/post/5b6076a3e51d4519575a51f0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值