Kotlin(八)集合List Set Map
1.在Kotlin中可以通过以下方式创建ArrayList、LinkedList、HashSet、HashMap等。
val arrayList = ArrayList<String>()val linkedList = LinkedList<String>()val hashSet = HashSet<String>()val hashMap = HashMap<String,Int>()
2.除了上面的方式,Kotlin还提供了其他创建集合的方法。
1)创建不可变集合。
之所以是不可变的,是因为Kotlin针对这种方式创建的集合,不提供set,remove,add的方法。只提供了get方法。
val list = listOf<Int>(1, 2, 3)val set = setOf<Int>(1, 2, 3)val map = mapOf(1 to "Jack", 2 to "Rose")
2)创建可以变集合。通过mutable创建的集合就是可变集合,可以对集合进行add set remove操作。
val mutableList = mutableListOf<Int>(1, 2, 3)val mutableSet = mutableSetOf<Int>(1, 2, 3)val mutableMap = mutableMapOf(1 to "Jack", 2 to "Rose")
3.对List的操作。
val list = listOf<Int>(1, 2, 3)//通常get的方式println(list.get(1))//之所以能使用[]类似数组的方式获取,是因为做了[]运算符重载,后面会讲到。println(list[1])//角标越界不会抛出异常,而是返回一个nullprintln(list.getOrNull(3))//通过?:空合并操作符,?:左边的值为空,则返回右边的值println(list.getOrNull(3) ?: -1)//如果角标越界,不会抛出异常。而是返回{}lambda表达式中的值println(list.getOrElse(3) { -1 })
1)通常通过get(index)来获取:
list.get(1)
2)也可以通过[index],像操作数组那样获取。之所以可以用[]来获取,是因为做了运算符重载。
list[1]
3)getOrNull,如果发生角标越界,不会抛出异常而是返回null。可以和?:空合并操作符结合起来使用,返回一个默认值。?:左边的值为空,则返回右边的值
list.getOrNull(3)
list.getOrNull(3) ?: -1
4)getOrElse接收两个参数,第一个索引值,第二个lambda表达式。如果角标越界,不会抛出异常,而是返回lambda表达式中的值。
list.getOrElse(3) { -1 }
5)可变集合:
val mutableList = mutableListOf<Int>(1, 2, 3)
set操作
mutableList.set(1,2)mutableList[1] = 2
add操作
mutableList.add(4)mutableList += 5
remove操作 :-=运算符重载,删除的是元素的值
mutableList -= 5mutableList.remove(5)
removeIf 接收一个lambda表达式,可以根据表达式中的条件进行删除。
mutableList.removeIf { it == 4 }
mutableList.removeIf { it.contains("H")}
6)List集合的遍历
可以用in遍历。
forEach 接收一个lambda表达式,会把集合中的元素传进来。
forEachIndexed接收一个lambda表达式,有两个参数,一个是index另外一个是对应的value
for (item in list) {println(item)}list.forEach {println(it)}list.forEachIndexed { index, value ->println("$index , $value")}
4.list集合的解构:
可以通过_过滤掉不想要的元素。
val (first:Int,second:Int,third:Int) = listOf<Int>(1, 2, 3)
val (first: Int, _, third: Int) = listOf<Int>(1, 2, 3)println("$first $third")
5.set集合
1)set的获取方式和list类似
val set = setOf<Int>(1, 2, 3)set.elementAt(1)set.elementAtOrElse(1) { -1 }set.elementAtOrNull(1)
2)可变set集合
val mutableSet = mutableSetOf<Int>(1, 2, 3)mutableSet += 4mutableSet -= 2mutableSet.remove(3)mutableSet.removeIf { it==4 }
3)list和set相互转换
list转为set,可以去除重复元素。set中是不允许重复的。
val list = mutableSet.toList();val set = mutableList.toSet();
6.数组类型
//ByteArrayval byteArray = byteArrayOf(1,2,3)//IntArrayval array = intArrayOf(1, 2, 3)//CharArrayval charArray = charArrayOf('a','b','c')
7.map集合
1)map集合的创建
Pari对象,存放的就是key value
val map = mapOf(Pair(1, "HanMei"), Pair(2, "LiLei"))
to看起来像一个关键子,其实to是一个函数。这种写法,后面会讲到。
val map = mapOf(1 to "HanMei", 2 to "LiLei")
创建可变map
val mutableMap = mutableMapOf(1 to "HanMei", 2 to "LiLei")
2)map的get操作
println(map[1])println(map.getValue(1))println(map.getOrDefault(1, "Default"))println(map.getOrElse(1) { "default" })
3)map的遍历
map.forEach {println("%$it.key , ${it.value}")}map.forEach { (key, value) -> println("$key ,$value") }
4)可变map的增删改
val mutableMap = mutableMapOf(1 to "HanMei", 2 to "LiLei")mutableMap += 3 to "XiaoHua"mutableMap.put(4, "XiaoHua")mutableMap.getOrPut(5) { "XiaoHua" }val getValue:()->String = {"value"}mutableMap.getOrPut(5) {getValue()}
Kotlin(八)集合List Set Map相关推荐
- 【Kotlin】Kotlin 语言集合中的高阶函数详解 ( 数据类 data class | maxBy | minBy | filter | map | any | count | find )
文章目录 I . List 集合高阶函数引入 II . Kotlin 数据类 ( data class ) III . Java 代码 与 Kotlin 代码实现对比 ( 查询年龄最大的 ) IV . ...
- 6.3 Kotlin集合类型之Map、MutableMap
Kotlin集合类型之Map.MutableMap Map 声明和创建Map集合 Map常用函数 Kotlin MutableMap 声明和创建MutableMap MutableMap常用函数 Ha ...
- 学习Kotlin(八)其他技术
推荐阅读: 学习Kotlin(一)为什么使用Kotlin 学习Kotlin(二)基本语法 学习Kotlin(三)类和接口 学习Kotlin(四)对象与泛型 学习Kotlin(五)函数与Lambda表达 ...
- 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 find 方法遍历 map 集合 | 代码示例 )
文章目录 一.使用 map 集合的 find 方法遍历 map 集合 二.代码示例 一.使用 map 集合的 find 方法遍历 map 集合 使用 map 集合的 find 方法遍历 map 集合 ...
- 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 each 方法遍历 map 集合 | 代码示例 )
文章目录 一.使用 map 集合的 each 方法遍历 map 集合 二.代码示例 一.使用 map 集合的 each 方法遍历 map 集合 遍历 map 集合 , 可以调用 map 集合的 eac ...
- java 定义map集合_java基础-Map集合
java基础-Map集合 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Map集合概述 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它 ...
- Kotlin学习笔记--Kotlin之集合
Kotlin学习笔记--Kotlin之集合 集合类 1. List 集合 1.1 不可变list 1.2 可变list MutableList 1.3 集合遍历 1.4 List的操作函数 1.5 l ...
- 集合list set Map问题
2019独角兽企业重金招聘Python工程师标准>>> ####集合list set Map的个人理解 首先集合说的对一类数据的存储容器,对象都是引用类型并不是基本数据类型 coll ...
- 【C++ 语言】容器 ( queue 队列 | stack 栈 | priority_queue 优先级队列 | set 集合 | 容器遍历 | map )
文章目录 queue 队列 stack 栈 priority_queue 优先级队列 priority_queue 优先级队列指定排序方法 priority_queue 优先级队列排序行为 prior ...
最新文章
- 验证码 禁止输入中文
- 探偵ガリレオーくさる3
- MySQL社区版的下载和安装
- python画函数图像要用到的模块_教你如何绘制数学函数图像——numpy和matplotlib的简单应用...
- KindEditor解决上传视频不能在手机端显示的问题
- 离开职场3年的宝妈,是该重回职场,还是自己创业呢?
- jquery解析php json,Jquery解析json数据详解_jquery
- Linux系统下的软件安装
- 华硕笔记本linux触摸板驱动,华硕触摸板驱动_华硕a豆笔记本触摸板驱动下载安装 v11.0.0.30 官方正式版-126g驱动网...
- 黑白群晖为Plex添加证书,开启HTTPS访问
- PyQt+PyQtWebEngine+Spyder问题小结
- android刷步工具,公益步数刷步助手
- 五类、超五、六类、超六类网线
- Unity Editor 编辑器扩展 九 Gizmos
- html涂鸦画板插件,sketchpad-简单的HTML5 Canvas涂鸦画板插件 -HTML5功能
- 台式计算机输入设备,简述常用的输入设备和输出设备有哪些 – 手机爱问
- Windows7下IPV6设置方法详解
- 使用java+OpenCV进行图片对比并标记差异部分(支持中文图片路径)
- 二级域名的创建、简单配置域名解析
- Spring cacheable
热门文章
- win10设置防火墙端口开放及检测开放端口
- AppsFlyer 研究(十六)广告平台配置及代理商授权总结
- vue判断是否双击_vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作...
- 异动分析(四)利用Python计算指标贡献度
- DLL/EXE查看工具Dumpbin
- AspectJ 使用介绍
- Mindjet MindManager 2021思维导图Keygen教程分享
- 情感障碍学计算机好吗,AI系统怎么帮助双相情感障碍患者
- 2020 年最受程序员欢迎的 20 个 CSS 框架,有没有你的菜?
- 想开发DAYU200,我教你