列表

  • 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

可以判空

Android Kotlin 列表删除 kotlin mutablelist_Android Kotlin 列表删除

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,其实还有其他的:

Android Kotlin 列表删除 kotlin mutablelist_java_02

删除

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,默认删除第一个相等元素。

删除的方法老多了:

Android Kotlin 列表删除 kotlin mutablelist_Kotlin 基础_03


批量删除

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]