简述
kotlin有三个集合类型——list set map,kotlin标准库提供了一整套用于管理集合的工具
这些集合接口与相关函数位于 kotlin.collections 包中
kotlin的集合分为可变集合类Mutable和不可变集合类Immutable,List、Set、Map都是不可变集合,与之对应MutableList、MutableSet、MutableMap是可变集合
创建集合
使用 listOf()、setOf()、mapOf() 创建不可变的 List、Set、Map
使用 mutableListOf()、mutableSetOf()、mutableMap() 创建可变的 MutableList 、MutableSet 、MutableMap
注意这里的to代表连接一个键值对,to前面是键,后面是值,set的默认实现是 LinkedHashSet
val list = listOf(1, 2, 3, 4, 5) val mutableList = mutableListOf("a", "b", "c") val set = setOf(1, 2, 3, 4, 5) val mutableSet = mutableSetOf("a", "b", "c") val map = mapOf(1 to "a", 2 to "b", 3 to "c") val mutableMap = mutableMapOf(1 to "X", 2 to "Y", 3 to "Z")
遍历集合
我们可以使用forEach遍历集合,其中map的遍历可通过it.key和it.value来获取键和值
list.forEach { println(it) } set.forEach { println(it) } map.forEach { println("K = ${it.key}, V = ${it.value}") }
若想在遍历的同时获取当前元素的下标,我们可以使用forEachIndexed方法
list.forEachIndexed { index, value -> println("list index = ${index}, value = $value") } set.forEachIndexed { index, value -> println("set index = ${index}, value = ${value}") }
添加元素
对于list,我们可以使用add方法添加元素,参数为一个时往list的末尾添加,两个参数时为往指定的index添加
val list = mutableListOf<Number>(1,2,3) list.add(4) list.forEach { print("$it ") // 1 2 3 4 } println() list.add(3,-1) list.forEach { print("$it ") // 1 2 3 -1 4 }
对于set,使用add方法添加元素,注意set是去重的
val set = mutableSetOf<Number>(1,2,3) set.add(4) set.forEach{ println(it) }
对于map,可以使用put方法添加,更常见的是使用中括号+等于的形式,括号内是键名,等号是值
val map = mutableMapOf<Number,String>(1 to "a",2 to "b") //map.put(3,"c") map[3]="c" map.forEach{ println("${it.key} ${it.value}") }
删除元素
list使用remove(value)删除值为value的元素,使用removeAt(index)删除指定下标元素
removeFirst()和removeLast()删除第一个和最后一个元素
val list = mutableListOf<Number>(10, 20, 30, 40, 50, 60, 70) list.remove(10) // 20, 30, 40, 50, 60, 70 list.removeAt(2) // 20, 30, 50, 60, 70 list.removeFirst() // 30, 50, 60, 70 list.removeLast() // 30, 50, 60
set的remove删除指定值的元素
val set = mutableSetOf<Number>(10, 20, 30, 40) set.remove(20) // 10 30 40
map使用remove删除元素,remove传入想删除的键值
val map = mutableMapOf<Number,String>(1 to "a",2 to "b") map.remove(2) map.forEach{ println("${it.key} ${it.value}") // 1 a }
list集合相关操作
按索引取元素
list本质就可以理解为一个变长数组,最简单的就是像数组一样通过[]拿到值
val numbers = listOf(1, 2, 3, 4) println(numbers.get(0)) println(numbers[0]) //numbers.get(5) // exception! println(numbers.getOrNull(5)) // null println(numbers.getOrElse(5, {it})) // 5
取列表的一部分
使用subList可以指定左闭右开的区间,取出list的一部分
val numbers = (0..13).toList() println(numbers.subList(3, 6))
排序
对于普通的基本类型,可以直接调用sort()和sortDescending()进行升序和降序排列
val list = mutableListOf(5,4,1,2,3,7,10) list.sort() //按升序排序 list.sortDescending() //降序
sort()和sortDescending()加上ed变成sorted()和sortedDescending()则是返回一个全新的排序后的list,原来的list不变
我们还可以使用sortBy()方法进行排序,传入的参数是一个selector
References
https://www.kotlincn.net/docs/reference/collections-overview.html
https://juejin.cn/post/6957922140767125517
https://www.kotlincn.net/docs/reference/collection-ordering.html
https://developer.android.com/codelabs/basic-android-kotlin-compose-collections?hl=zh-tw#0
标签:map,set,val,kotlin,list,value,println From: https://www.cnblogs.com/CNLayton/p/17199397.html