kotlin集合的相关操作

1、可变集合 和 非可变集合

MutableList:可变集合 
List:不可变集合 (只能取,不能添加和修改)

发现不可变集合 添加元素会报错

不可变集合更加线程安全

2、遍历

(1)、until 方式

循环递增,不包含最后一位 比如 0 util 10 实际上是 0 到9

   val listType : Type = object : TypeToken<MutableList<PrintResponse>>(){}.type
        printSettingList = ShareObjectUtil.getObject(this, ShareObjectUtil.printSettingKey, listType) as MutableList<PrintResponse>?
        for(i in 0 until ListUtils.getSize(printSettingList)){
            
        }

(2)、..方式

循环递增,包含最后一位 比如 0 .. 10 实际上是 0 到 10

 val listType : Type = object : TypeToken<MutableList<PrintResponse>>(){}.type
        printSettingList = ShareObjectUtil.getObject(this, ShareObjectUtil.printSettingKey, listType) as MutableList<PrintResponse>?
        for(i in 0 .. ListUtils.getSize(printSettingList)-1){

        }

(3)、downTo

循环递减,包含 最大index, 10..0 实际上是 10..0

 val listType : Type = object : TypeToken<MutableList<PrintResponse>>(){}.type
        printSettingList = ShareObjectUtil.getObject(this, ShareObjectUtil.printSettingKey, listType) as MutableList<PrintResponse>?
        for(i in ListUtils.getSize(printSettingList)-1 downTo 0){

        }

(4)、step

循环间隔

 val listType : Type = object : TypeToken<MutableList<PrintResponse>>(){}.type
        printSettingList = ShareObjectUtil.getObject(this, ShareObjectUtil.printSettingKey, listType) as MutableList<PrintResponse>?
        for(i in 0 .. ListUtils.getSize(printSettingList)-1 step 2){

        }

(5)、list循环遍历,和util 简写

 val listType : Type = object : TypeToken<MutableList<PrintResponse>>(){}.type
        printSettingList = ShareObjectUtil.getObject(this, ShareObjectUtil.printSettingKey, listType) as MutableList<PrintResponse>?
        printSettingList?.let {
            for(printSettingItem in it){

            }
        }

(6)list 可以得到 索引和值的方法   list.withIndex

val listType : Type = object : TypeToken<MutableList<PrintResponse>>(){}.type
        printSettingList = ShareObjectUtil.getObject(this, ShareObjectUtil.printSettingKey, listType) as MutableList<PrintResponse>?
        printSettingList?.let {
            for((i,printSettingItem) in it.withIndex()){
                var index = i
                var response = printSettingItem
            }
        }

(7)repeat 重复循环

 repeat(10){
            
        }

(8) in操作符还可以判断范围

      val isContain:Boolean = "1" in listOf("1","2")

  (9)forEach

  mutableListOf(Account("123", "456"),Account("123", "456")).forEach { 
            it.name
            it.type
        }

(10) forEachWithIndex

 mutableListOf(Account("123", "456"),Account("123", "456")).forEachWithIndex { index, it ->
            it.name
            it.type
        }

3、获取元素的值

(1)、get(0) 、getOrNull(0)、getOrElse

 listOf(1,2,3)[0]
        listOf(1,2,3).getOrNull(0)
        listOf(1,2,3).getOrElse(0) { 2 }

(2)、elementAt(0)、elementAtOrNull(0)、elementAtOrElse(0)

   listOf(1,2,3).elementAt(0)
        listOf(1,2,3).elementAtOrNull(0)
        listOf(1,2,3).elementAtOrElse(0) { 2 }

(3)、firstOrNull()

 listOf(1,2,3).firstOrNull()

(4)、map相关

  val map = mutableMapOf<String, Boolean>().withDefault { false }
        map.getOrElse("isEnable", {false})
        map.getOrPut("isEnabe", {false})

(5)、获取第几个元素的值

  listOf(1,2,3).component1()
        listOf(1,2,3).component2()

4、筛选

val list = listOf(1,2,3,4)
        // 筛选符合条件
        list.filter {
            it in 1..3
        }
        // 筛选条件多了索引
        list.filterIndexed{
            index, it -> index>0 && it <2
        }
        // 筛选不符合条件
        list.filterNot {
            it in 1..3
        }
        // 筛选非空
        list.filterNotNull()
        // 筛选第一个满足条件的元素,没有会返回NoSuchElementException
        list.first {
            it >2
        }
        // 筛选 第一个满足条件的元素,没有,则返回Null
        list.firstOrNull {
            it > 3
        }
        // 同firstOrNull
        list.find {
            it > 3
        }
        // 返回最后一个满足条件的元素,没有,则 返回Null
        list.findLast {
            it > 3
        }
  // 如果至少有一个元素与判断条件相符,则 返回true
        list.any {
            it > 2
        }
        // 如果全部元素与判断条件相符,则 返回true
        list.all {
            it > 4
        }

5、集合 和 String 互转

// 集合转String,并添加分隔符
if (list.isNullOrEmpty()) "" else list.joinToString(",")

// String 转List
str?.split(",")?.toMutableList()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值