列表
- List
- 初始化
- 方法
- 通用方法
- 循环遍历
- 还有
- MutableList
- 初始化
- 方法
- 添加
- 删除
- 替换指定位置的元素
- 保留某些元素
在学些基础数据类型 Array的时候,我就很奇怪为什么不能增和删,后来发现,原来有另外一个类实现了类似Java中列表List的功能,这就是
MutableList 。而List和我们的Java中的List不一样,他只是提供增删改查除外的功能。
后来发现原来MutableList
和 List
这两个都接口,其中MutableList
实现了List
,所以使用List
的方式创建列表,其中的功能MutableList
内全部包含。MutableList
比List
多了增删改的功能,这样我们就根据需求来合理使用哪种创建方法。
对了,两种列表可以互转,所以不用担心现在使用的是List,将来在其他地方有需要增删改的地方、
具体实现我也不知道在哪,等我牛逼点的再来更新下。
List
通用的有序元素集合,仅支持对列表的只读访问。
初始化
第一种
val list = listOf<String>("1","2")
第二种,自动排出数组为null的数据
val list = listOfNotNull("1", "2", null)
println(list)
输出
2021-11-18 22:20:19.136 12092-12092/com.example.mvvmdemo I/System.out: [1, 2]
方法
通用方法
val list = listOf<String>("1", "2", "22", "3", "2")
println("是不是包含 ==" + list.contains("2"))
println("列表数量 ==" + list.size)
println("列表是不是空 ==" + list.isEmpty())
println("列表中元素2的位置 ==" + list.indexOf("2"))
println("截取列表 从0开始到3之前截止 ==" + list.subList(0, 3))
println("获取第一个元素 ==" + list.get(0))
println("获取第一个元素 ==" + list[0])
println("列表中元素2的最后位置 ==" + list.lastIndexOf("2"))
println("列表的最后位置 ==" + list.lastIndex)
输出
2021-11-18 22:43:16.684 12329-12329/com.example.mvvmdemo I/System.out: 是不是包含 ==true
2021-11-18 22:43:16.684 12329-12329/com.example.mvvmdemo I/System.out: 列表数量 ==5
2021-11-18 22:43:16.684 12329-12329/com.example.mvvmdemo I/System.out: 列表是不是空 ==false
2021-11-18 22:43:16.684 12329-12329/com.example.mvvmdemo I/System.out: 列表中元素2的位置 ==1
2021-11-18 22:43:16.684 12329-12329/com.example.mvvmdemo I/System.out: 截取列表 从0开始到3之前截止 ==[1, 2, 22]
2021-11-18 22:43:16.684 12329-12329/com.example.mvvmdemo I/System.out: 获取第一个元素 ==1
2021-11-18 22:43:16.684 12329-12329/com.example.mvvmdemo I/System.out: 获取第一个元素 ==1
2021-11-18 22:43:16.684 12329-12329/com.example.mvvmdemo I/System.out: 列表中元素2的最后位置 ==4
2021-11-18 22:43:16.684 12329-12329/com.example.mvvmdemo I/System.out: 列表的最后位置 ==4
可以判空
println(list.isEmpty())
println(list.isNotEmpty())
println(list.isNullOrEmpty())
输出
2021-11-17 22:25:52.858 5442-5442/com.example.mvvmdemo I/System.out: false
2021-11-17 22:25:52.858 5442-5442/com.example.mvvmdemo I/System.out: true
2021-11-17 22:25:52.858 5442-5442/com.example.mvvmdemo I/System.out: false
循环遍历
val list: MutableList<String> = arrayListOf("1", "2", "3", "4")
println("==========第一种方法==========")
for (it in list) {
println(it)
}
println("==========第二种方法==========")
for (it in list.indices) {
println(it)
}
println("==========第三种方法==========")
list.forEach {
println(it)
}
println("==========第四种方法==========")
for (index in 0 until list.size) {
println(list[index])
}
println("==========第五种方法==========")
for ((index, item) in list.withIndex()) {
println("第 $index 个元素是 $item")
}
输出
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: ==========第一种方法==========
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: 1
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: 2
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: 3
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: 4
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: ==========第二种方法==========
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: 0
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: 1
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: 2
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: 3
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: ==========第三种方法==========
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: 1
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: 2
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: 3
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: 4
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: ==========第四种方法==========
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: 1
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: 2
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: 3
2021-11-18 21:56:02.492 11796-11796/com.example.mvvmdemo I/System.out: 4
2021-11-18 22:22:39.001 12178-12178/com.example.mvvmdemo I/System.out: ==========第五种方法==========
2021-11-18 22:22:39.001 12178-12178/com.example.mvvmdemo I/System.out: 第 0 个元素是 1
2021-11-18 22:22:39.001 12178-12178/com.example.mvvmdemo I/System.out: 第 1 个元素是 2
2021-11-18 22:22:39.001 12178-12178/com.example.mvvmdemo I/System.out: 第 2 个元素是 3
2021-11-18 22:22:39.001 12178-12178/com.example.mvvmdemo I/System.out: 第 3 个元素是 4
还有
list.toString()
list.toList()
list.listIterator() //获取迭代器
list.toMutableList() //转换类型
等等方法,慢慢挖掘。
MutableList
初始化
第一种,mutableListOf
val list: MutableList<Int> = mutableListOf<Int>()
val list2: MutableList<String> = mutableListOf<String>("123")
val list3: MutableList<Int> = mutableListOf<Int>(1,2,3)
第二种,arrayListOf
val list4: MutableList<Int> = arrayListOf<Int>()
val list5: MutableList<String> = arrayListOf<String>("123")
val list6: MutableList<Int> = arrayListOf<Int>(1, 2, 3)
第三种,ArrayList
val list10: MutableList<Int> = ArrayList()
val list11: MutableList<String> = ArrayList(1) //1是容量
方法
介绍部分方法
添加
add
val list: MutableList<String> = mutableListOf<String>()
list.add("1")
list.add("2")
println(list)
list.add(0,"3")
println(list)
输出
2021-11-17 22:09:05.293 595-595/com.example.mvvmdemo I/System.out: [1, 2]
2021-11-17 22:09:05.294 595-595/com.example.mvvmdemo I/System.out: [3, 1, 2]
addAll
val list10: MutableList<String> = arrayListOf<String>("我是第10个列表")
list.addAll(list10)
println(list)
list.addAll(0, list10)
println(list)
输出
2021-11-17 22:13:12.217 2767-2767/com.example.mvvmdemo I/System.out: [3, 1, 2, 我是第10个列表]
2021-11-17 22:13:12.217 2767-2767/com.example.mvvmdemo I/System.out: [我是第10个列表, 3, 1, 2, 我是第10个列表]
如上,演示了两种addAll,其实还有其他的:
删除
list.removeAt(1)
println(list)
list.remove("我是第10个列表")
println(list)
输出
2021-11-17 22:18:40.099 3964-3964/com.example.mvvmdemo I/System.out: [我是第10个列表, 1, 2, 我是第10个列表]
2021-11-17 22:18:40.099 3964-3964/com.example.mvvmdemo I/System.out: [1, 2, 我是第10个列表]
使用 remove 删除value,默认删除第一个相等元素。
删除的方法老多了:
批量删除
val list: MutableList<String> = arrayListOf("3","1","2","22","16","16")
val listNeedRemove: MutableList<String> = arrayListOf("1","16")
list.removeAll(listNeedRemove)
println(list)
输出
2021-11-18 21:36:13.381 11113-11113/com.example.mvvmdemo I/System.out: [3, 2, 22]
剩的留着以后慢慢悟吧。
替换指定位置的元素
val list: MutableList<String> = arrayListOf("3","1","2")
println(list)
val str = list.set(0, "4")
println(list)
println(str)
输出
2021-11-18 21:33:31.408 10997-10997/com.example.mvvmdemo I/System.out: [3, 1, 2]
2021-11-18 21:33:31.408 10997-10997/com.example.mvvmdemo I/System.out: [4, 1, 2]
2021-11-18 21:33:31.408 10997-10997/com.example.mvvmdemo I/System.out: 3
使用set 方法可以替换指定位置的元素,并且返回被替换的元素。
保留某些元素
val list: MutableList<String> = arrayListOf("3", "1", "2", "22", "16", "16")
val listNeedRemove: MutableList<String> = arrayListOf("1", "16")
list.retainAll(listNeedRemove)
println(list)
输出
2021-11-18 21:40:50.949 11330-11330/com.example.mvvmdemo I/System.out: [1, 16, 16]