前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android面试题之Kotlin常见集合操作技巧

Android面试题之Kotlin常见集合操作技巧

作者头像
AntDream
发布2024-06-13 21:02:31
540
发布2024-06-13 21:02:31
举报

list

创建和修改不可变list:listOf
代码语言:javascript
复制


var list = listOf("a","d","f")
println(list.getOrElse(3){"Unknown"})
println(list.getOrNull(3) ?: "Unknown")

创建和修改可变list:mutableList

代码语言:javascript
复制


val mutableList = mutableListOf("a","d","f")
mutableList.removeIf { it.contains("a") }
遍历和解构

forIn,forEach,forEachIndexed

用下划线_来跳过不需要的元素

代码语言:javascript
复制


for (s in list){
    println(s)
}

list.forEach{
    println(it)
}

list.forEachIndexed { index, item ->
    println("$index, $item")
}
//解构
val(a,_,c) = list

"_"表示跳过这个元素,跳过的元素不会被读取

转换
代码语言:javascript
复制


list.toMutableList()
去重
代码语言:javascript
复制


list.distinct()
快速筛选和排序

可以结合filter、forEach、sortedByDescending、sortedBy来快速对一个list进行筛选和排序

代码语言:javascript
复制


val resultList = mutableListOf<AppInfo>()
val recommendations = listOf(AppA(), AppB(), AppC())
//根据app的安装时间按照倒序排列
recommendations.filter { 
    //filter里跟筛选的条件,符合条件的数据会继续走后面的排序
    it.isAppInstalled() 
}  
.sortedByDescending { 
     //这里是排序的条件,sortedBy是正序
    it.getAppInstalledTime() 
}.forEach { resultList.add(it) }

set

不可重复的,去重里面的元素,函数操作基本同list

map

代码语言:javascript
复制


fun main() {
    val map = mapOf("Jack" to 20, "Jim" to 18)
    mapOf(Pair("Jim",20), Pair("json",30))
    println(map["Jack"])
    println(map.getValue("Jack"))
    println(map.getOrElse("java"){"unknown"})
    println(map.getOrDefault("java", 0))

    map.forEach{
        println("${it.key}, ${it.value}")
    }

    val mutableMap = mutableMapOf("Jack" to 20, "Jim" to 18)
    //添加元素
    mutableMap += "jim" to 30
    mutableMap["jim"] = 31
    mutableMap.getOrPut("role"){19}
    println(mutableMap)
}

to,实际上是一个函数,返回一个Pair结果

去重
代码语言:javascript
复制


val clone = filteredDirectories.clone() as ArrayList<Directory>
//数据去重。
callback(clone.distinctBy { it.path.getDistinctPath() } as ArrayList<Directory>)

码字不易,求转发,求点在看,求关注,感谢!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AntDream 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • list
    • 创建和修改不可变list:listOf
      • 遍历和解构
        • 转换
          • 去重
            • 快速筛选和排序
            • set
            • map
              • 去重
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档