Kotlin学习笔记--Kotlin之集合

本文详细介绍了Kotlin中的集合类,包括List的不可变和可变集合,如List.of()和mutableListOf(),以及List的遍历、操作函数、运算和过滤函数。还探讨了Set集合的创建和操作,以及Map的创建、访问元素及常用函数。内容覆盖了Kotlin集合的基础和高级用法。
摘要由CSDN通过智能技术生成

集合类

集合类是一种数据结构。
Kotlin中的集合类分为可变集合类和不可变集合类,主要类型为:list,set,map

1. List 集合

List继承与Collection接口,主要特征是以线性存储,没有特定顺序,集合中可以存放重复对象。
Kotlin中的List分为不可变集合类List(ReadOnly) 和可变集合类MutableList(W&R)

1.1 不可变list

不可变List不提供set、add等对list内容进行操作的方法,如果调用list.set方法,编译器会直接报错。
我们可以通过list.of方法来创建一个不可变List,如果创建的是一个空list,则必须声明变量的类型。
list根据索引取值,在java中我们使用list.get(index)方法,在Kotlin中,我们可以使用同样的方法,不过编译器会建议使用更简洁的方法,类似于数组的取值list[index]来取对应值。

fun testList(){
   
        //创建一个空的list
        val list1:List<String> = listOf()
        Log.d(TAG,"list1.size:${
     list1.size}")
        Log.d(TAG,"list1.class:${
     list1::class.java}")
        val list2 = listOf("1")//一个元素 list2 List<String>
        Log.d(TAG,"list2.size:${
     list2.size}")
        Log.d(TAG,"list2.class:${
     list2::class.java}")
        val list3 = listOf("K","O","T","L","I","N",1,2,3)//多个元素 list3 List<Any>
        Log.d(TAG,"list3.size:${
     list3.size}")
        Log.d(TAG,"list3.class:${
     list3::class.java}")
        Log.d(TAG,"list3[1]$list3[1]")
        Log.d(TAG,"list3[1]${
     list3.get(1)}")
        println(list3)
        //D/CollectionTest: list1.size:0
        //D/CollectionTest: list1.class:class kotlin.collections.EmptyList
        //D/CollectionTest: list2.size:1
        //D/CollectionTest: list2.class:class java.util.Collections$SingletonList
        //D/CollectionTest: list3.size:9
        //D/CollectionTest: list3.class:class java.util.Arrays$ArrayList
        //I/System.out: [K, O, T, L, I, N, 1, 2, 3]
        //D/CollectionTest: list3[1]O
        //D/CollectionTest: list3[1]O
    }

1.2 可变list MutableList

在MutableList中,除了List的基本函数外,添加了add,remove,set,clear,retaionAll等等修改List的操作函数。
我们可以通过mutableListOf方法来创建一个可变的list。

		val mList1 = mutableListOf("1","2","Kotlin")//声明一个可变的集合
        mList1.clear()
        Log.d(TAG,"mList1$mList1")
        val mList2 = mutableListOf("1","2","Kotlin","23","456","2")
        Log.d(TAG,"mList2$mList2")
        val result = mList2.retainAll(mutableListOf("1","Kotlin","retain"))//取两个集合的交集,并赋给mList2
        Log.d(TAG,"result$result")
        Log.d(TAG,"mList2$mList2")
        //D/CollectionTest: mList1[]
        //D/CollectionTest: mList2[1, 2, Kotlin, 23, 456, 2]
        //D/CollectionTest: resulttrue
        //D/CollectionTest: mList2[1, Kotlin]

同时我们可以将一个不可变的集合转换成一个可变集合

		val list = listOf("pig","panda","dog")
        val mlist3 = list.toMutableList()
        mlist3[2] = "monkey"
        mlist3.add("chicken")
        Log.d(TAG,"mlist3:$mlist3")
        //D/CollectionTest: mlist3:[pig, panda, monkey, chicken]

1.3 集合遍历

可以使用Iterator迭代器来遍历集合,也可以用forEach来遍历集合,当然,我们也可以用for循环

		val list = mutableListOf("k", "a", "b", "d")
        val iterator = list.iterator()
        while (iterator.hasNext()) {
   
            Log.d(TAG, "list:${
     iterator.next()}")
        }
        //D/CollectionTest: list:k
        //D/CollectionTest: list:a
        //D/CollectionTest: list:b
        //D/CollectionTest: list:d
        val list2 = mutableListOf<Char>()
        for (a in 'a'..'z') {
   
            list2.add(a)
        }
        Log
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值