集合分类
Kotlin 中的集合按照可变性分类可以分为:
可变集合
不可变集合
按照类型分类可以分为:
List集合
Map集合
Set集合
对于List
List ——声明不可变List集合
MutableList——声明可变List集合
对于Map
Map——声明不可变Map集合
MutableMap——声明可变Map集合
对于Set
Set——声明不可变Set集合
MutableSet——声明可变Set集合
集合创建
List
创建一个不可变的list
val mList = listOf<Int>(1, 2, 3)
创建一个可变的list
val mList = mutableListOf<Int>(1, 2, 3)
Map
创建一个不可变的Map
val mList = mapOf(Pair("key1", 1), Pair("key2", 2))
创建一个可变的Map
val mList = mutableMapOf("key1" to 1, "key2" to 2)
集合操作
总数操作
any
说明:如果至少有一个元素符合判断条件,则返回true,否则false,例:
val list = listOf(1, 2, 3, 4, 5) list.any { it > 10 }
结果为false
all
说明:如果集合中所有的元素都符合判断条件,则返回true否则false,例:
val list = listOf(1, 2, 3, 4, 5)
list.any { it < 10 }
结果为true
count
说明:返回集合中符合判断条件的元素总数。例:
list.count { it <3 }
结果为2
forEach
说明:遍历所有元素,并执行给定的操作(类似于Java 中的for循环)。例:
list.forEach{ Log.i(TAG,it.toString()) }
结果为:1 2 3 4 5
过滤操作
filter
说明:过滤所有符合给定函数条件的元素。例:
list.filter { it > 2 }
结果为:3 4 5
filterNotNull
说明:过滤所有元素中不是null的元素。例:
list.filterNotNull()
结果为:1 2 3 4 5
映射操作
flatMap
说明:遍历所有的元素,为每一个创建一个集合,最后把所有的集合放在一个集合中。例:
list.flatMap { listOf(it, it + 1) }
结果为: 1 2 2 3 3 4 4 5 5 6(每个元素都执行加1后作为一个新元素)
groupBy
说明:返回一个根据给定函数分组后的map。例:
list.groupBy { if (it >3) "big" else "small" }
结果为:small=[1, 2, 3]big=[4, 5]
map
说明:返回一个每一个元素根据给定的函数转换所组成的集合。例:
list.map { it * 2 }
结果为:2 4 6 8 10
顺序操作
reversed
说明:返回一个与指定集合相反顺序的集合。例:
list.reversed()
结果为:5 4 3 2 1
sorted
说明:返回一个自然排序后的集合。例:
val list = listOf(1, 2, 6, 4, 5) var s = list.sorted()
结果为 1 2 4 5 6
sortedBy
说明:返回一个根据指定函数排序后的集合。例:
val list = listOf(1, 2, 6, 4, 5) var s = list.sortedBy { it - 2 }
结果为 1 2 4 5 6
元素操作
contains
说明:指定元素可以在集合中找到,则返回true,否则false。例:
list.contains(1)
结果为:true
elementAt
说明:返回给定index对应的元素,如果index数组越界则会抛出IndexOutOfBoundsException。例:
list.elementAt(1)
结果为:2
indexOf
说明:返回指定元素的第一个index,如果不存在,则返回-1。例:
list.indexOf(2)
结果为:1