Kotlin List与Set和Map实例讲解
作者:知奕奕 发布时间:2023-03-01 01:29:57
标签:Kotlin,List,Set,Map
List
和 java 中的 list 几乎一致;
getOrElse
取出对应索引,如果该索引不存在或者为 null,就返回一个 lambda 函数;
getOrNull
取出对应索引,如果找不到就直接返回 null
val lis = listOf("abc", "asd", "qwe")
println(lis.getOrElse(0) { "cant find it" })
println(lis.getOrNull(0) ?: "null")
可变列表
我们默认使用的 listof 创建的列表是无法进行数据改动的;
此时就需要使用可变列表 mutableListOf
val mut = mutableListOf("a","b","c")
mut.add("k")
mut.removeAt(0)
可变列表和不可变列表还可以使用方法进行相互转换;
mut.toList(); // 转为不可变列表
mut.toMutableList(); // 再转回可变列表
mutator
任何可变列表都具有此属性;
我们可以直接使用运算符进行列表元素的增删;
removeIf
表示移除掉符合条件的指定元素
mut += "tom"
mut -= "tom"
mut.removeIf { it.contains("tom") }
遍历
目前有三种遍历方式,优缺点自己判断;
不做过多解释,看代码就懂了
for (str: String in mut) {
println(str)
}
mut.forEach {
println(it)
}
mut.forEachIndexed { index: Int, s: String ->
println("$index + $s")
}
set
set 集合中的元素会自动去重!
检索 set 中的元素需要使用
val setdemo = setOf("asd", "wqe", "asd")
println(setdemo.elementAt(0))
可变集合
和可变列表一致,依葫芦画瓢即可;
val setmut = mutableSetOf("son","son","sun")
setmut += "damn"
setmut -= "son"
快速去重
目前有俩种方式:
list 转为 set 然后再转回 list;
使用函数 distinct
// 二次转换去重
val lis = mutableListOf("apple", "pear", "pear")
lis.toSet().toList()
// 函数去重
lis.distinct()
列表类型的转换
可以直接将列表转换为数组
val intarr = intArrayOf(1, 2, 3)
val intlist = listOf(1, 2, 3).toIntArray()
map
映射表
下面展示了两种获取指定 key 的 value 的方法
可变映射表这里不说了
val m = mapOf("map1" to "asd", "map2" to "qwe")
println(m.getValue("map1"))
println(m["map2"])
来源:https://blog.csdn.net/delete_you/article/details/127095015


猜你喜欢
- 1.网关简介所谓的网关就是指系统的统一入口,它封装了运用程序的内部结构,为客户端提供统一的服务,一些与业务功能无关的公共逻辑可以在这里实现,
- 1. InputStream -> byte[]引入 apache.commons.is 包import org.apache.com
- 前言最近写了一篇博客是关于 使用Jenkins来构建SVN+Maven项目 ,这里使用的的代码版本工具是SVN,但是事实上也有很多公司使用G
- 在一个项目中,如果我们既用到了Struts2又用到了Servlet,项目运行时有可能无法正常访问Servlet,原因是在配置Struts的过
- 在项目中遇到需要批量更新的功能,原本想的是在Java中用循环访问数据库去更新,但是心里总觉得这样做会不会太频繁了,太耗费资源了,效率也很低,
- 几乎所有运算符都只能操作“主类型”(Primitives)。例外是“=”、“= =”和“! =”,它们能操作所有对象。除此以外,String
- 首先我们看看为什么添加Watch。ZooKeeper是用来协调(同步)分布式进程的服务,提供了一个简单高性能的协调内核,用户可以在此之上构建
- 最近学习JavaFx,发现网上大概只有官方文档可以查阅,学习资料较少,写个拼图游戏供记录。。大概说一下思路:1.面板的构建:面板采用Grid
- 本文实例讲解了iOS从背景图中取色的代码,分享给大家供大家参考,具体内容如下实现代码:void *bitmapData; //内存空间的指针
- 使用Android AudioRecord 录制PCM文件,android SDK保证在所有设备上都支持的采样频率只有44100HZ,所以如
- 本文实例讲述了Java ThreadLocal类应用。分享给大家供大家参考,具体如下:一 点睛ThreadLocal,是Thread Loc
- 在Flutter中实现整个App变为灰色是非常简单的,只需要在最外层的控件上包裹ColorFiltered,用法如下:@overrideWi
- 1. 初始 Spring Boot1.1 什么是Spring BootSpring 的诞生是为了简化 Java 程序的开发的Spring B
- 本文实例为大家分享了javafx实现时钟效果的具体代码,供大家参考,具体内容如下核心为三个函数:第一个为 public void dials
- Android中处理图像是一件很常见的事情,这里记录备忘一些亲身使用过的处理图片数据的方法。转为BitmapRGB值转Bitmappriva
- 前言Spark Sql可以通过UDF来对DataFrame的Column进行自定义操作。在特定场景下定义UDF可能需要用到Spark Con
- 前言对于Java程序员,可以说对于ArrayList和LinkedList可谓是十分熟悉了对于ArrayList和LinkedList,他们
- 在Android中,线程内部或者线程之间进行信息交互时经常会使用消息,这些基础的东西如果我们熟悉其内部的原理,将会使我们容易、更好地架构系统
- 一,定义变量C# 表达式树中,定义一个变量,使用 ParameterExpression。创建变量结点的方法有两种,Express
- 这几天恰好和朋友谈起了递归,忽然发现不少朋友对于“尾递归”的概念比较模糊,网上搜索一番也没有发现讲解地完整详细的资料,于是写了这么一篇文章,