一、Array(数组)
创建方法
方法 |
说明 |
示例 |
arrayOf() |
创建数组 |
val arr = arrayOf(1, 2, 3) |
arrayOfNulls() |
创建指定大小的空数组 |
val nullArr = arrayOfNulls<String>(3) |
Array() 构造函数 |
通过函数初始化 |
val squares = Array(5) { i -> i * i } |
常用方法
方法 |
说明 |
示例 |
size |
获取数组大小 |
arr.size // 3 |
get(index) |
获取指定位置元素 |
arr.get(0) // 1 |
set(index, value) |
设置指定位置元素 |
arr.set(1, 5) |
contains(element) |
检查是否包含元素 |
arr.contains(2) // true |
indexOf(element) |
获取元素索引 |
arr.indexOf(3) // 2 |
forEach { } |
遍历数组 |
arr.forEach { println(it) } |
map { } |
转换数组 |
arr.map { it * 2 } // [2, 4, 6] |
filter { } |
过滤元素 |
arr.filter { it > 1 } // [2, 3] |
sort() |
排序(可变数组) |
arr.sort() |
sliceArray(indices) |
切片 |
arr.sliceArray(0..1) // [1, 2] |
joinToString() |
连接为字符串 |
arr.joinToString("-") // "1-2-3" |
二、List(列表)
创建方法
方法 |
说明 |
示例 |
listOf() |
创建不可变列表 |
val list = listOf("a", "b", "c") |
mutableListOf() |
创建可变列表 |
val mList = mutableListOf(1, 2, 3) |
emptyList() |
创建空列表 |
val empty = emptyList<Int>() |
List(3) { "TZ" } |
创建3个相同的元素TZ |
List(3) { "TZ" } // "a, b, c" |
通用方法(不可变/可变)
方法 |
说明 |
示例 |
size |
获取列表大小 |
list.size // 3 |
get(index) |
获取指定位置元素 |
list[1] // "b" |
indexOf(element) |
获取元素索引 |
list.indexOf("c") // 2 |
contains(element) |
检查是否包含元素 |
list.contains("a") // true |
subList(from, to) |
获取子列表 |
list.subList(0, 2) // ["a", "b"] |
forEach { } |
遍历列表 |
list.forEach { print(it) } |
map { } |
转换列表 |
list.map { it.uppercase() } // [A, B, C] |
filter { } |
过滤元素 |
list.filter { it != "b" } // ["a", "c"] |
any { } |
检查是否有元素满足条件 |
list.any { it == "b" } // true |
all { } |
检查所有元素满足条件 |
list.all { it.length == 1 } // true |
none { } |
检查没有元素满足条件 |
list.none { it == "d" } // true |
first() |
获取第一个元素 |
list.first() // "a" |
last() |
获取最后一个元素 |
list.last() // "c" |
sorted() |
排序(返回新列表) |
list.sorted() // 自然顺序 |
reversed() |
反转列表 |
list.reversed() // ["c", "b", "a"] |
joinToString() |
连接为字符串 |
list.joinToString() // "a, b, c" |
listOfNotNull(element) |
自动去除所有null元素,再创建只读列表 |
val array = arrayOf("A", null, "C");
val list: List<String> = listOfNotNull(*array) |
可变列表特有方法
方法 |
说明 |
示例 |
add(element) |
添加元素 |
mList.add(4) |
add(index, element) |
在指定位置添加元素 |
mList.add(0, 0) |
remove(element) |
移除元素 |
mList.remove(2) |
removeAt(index) |
移除指定位置元素 |
mList.removeAt(0) |
set(index, element) |
修改指定位置元素 |
mList[1] = 10 |
clear() |
清空列表 |
mList.clear() |
sort() |
原地排序 |
mList.sort() |
shuffle() |
随机打乱 |
mList.shuffle() |
三、Set(集合)
创建方法
方法 |
说明 |
示例 |
setOf() |
创建不可变集合 |
val set = setOf(1, 2, 3) |
mutableSetOf() |
创建可变集合 |
val mSet = mutableSetOf("a", "b") |
hashSetOf() |
创建HashSet |
val hashSet = hashSetOf(1.0, 2.0) |
sortedSetOf() |
创建SortedSet |
val sortedSet = sortedSetOf(3, 1, 2) |
通用方法(不可变/可变)
方法 |
说明 |
示例 |
size |
获取集合大小 |
set.size // 3 |
contains(element) |
检查是否包含元素 |
set.contains(2) // true |
isEmpty() |
检查是否为空 |
set.isEmpty() // false |
isNotEmpty() |
检查是否非空 |
set.isNotEmpty() // true |
forEach { } |
遍历集合 |
set.forEach { println(it) } |
filter { } |
过滤元素 |
set.filter { it > 1 } // [2, 3] |
map { } |
转换集合 |
set.map { it * 2 } // [2, 4, 6] |
any { } |
检查是否有元素满足条件 |
set.any { it % 2 == 0 } // true |
all { } |
检查所有元素满足条件 |
set.all { it < 5 } // true |
union(other) |
并集 |
set.union(setOf(3, 4)) // [1,2,3,4] |
intersect(other) |
交集 |
set.intersect(setOf(2,3)) // [2,3] |
minus(other) |
差集 |
set.minus(setOf(3)) // [1,2] |
可变集合特有方法
方法 |
说明 |
示例 |
add(element) |
添加元素 |
mSet.add("c") |
remove(element) |
移除元素 |
mSet.remove("a") |
clear() |
清空集合 |
mSet.clear() |
retainAll(other) |
保留交集 |
mSet.retainAll(setOf("b", "c")) |
addAll(other) |
添加多个元素 |
mSet.addAll(listOf("d", "e")) |
四、Map(映射)
创建方法
方法 |
说明 |
示例 |
mapOf() |
创建不可变映射 |
val map = mapOf(1 to "a", 2 to "b") |
mutableMapOf() |
创建可变映射 |
val mMap = mutableMapOf("k1" to 1, "k2" to 2) |
hashMapOf() |
创建HashMap |
val hashMap = hashMapOf(1 to "x", 2 to "y") |
linkedMapOf() |
创建LinkedHashMap |
val linkedMap = linkedMapOf("a" to 1, "b" to 2) |
通用方法(不可变/可变)
方法 |
说明 |
示例 |
size |
获取映射大小 |
map.size // 2 |
keys |
获取所有键 |
map.keys // [1, 2] |
values |
获取所有值 |
map.values // ["a", "b"] |
entries |
获取所有键值对 |
map.entries |
isEmpty() |
检查是否为空 |
map.isEmpty() // false |
containsKey(key) |
检查是否包含键 |
map.containsKey(1) // true |
containsValue(value) |
检查是否包含值 |
map.containsValue("b") // true |
get(key) |
获取键对应值 |
map[2] // "b" |
getOrDefault(key, default) |
安全获取值 |
map.getOrDefault(3, "c") // "c" |
forEach { } |
遍历映射 |
map.forEach { k, v -> println("$k: $v") } |
filter { } |
过滤键值对 |
map.filter { (k, v) -> k > 1 && v.startsWith("b") } |
mapKeys { } |
转换键 |
map.mapKeys { it.key * 2 } // {2="a", 4="b"} |
mapValues { } |
转换值 |
map.mapValues { it.value.uppercase() } // {1="A", 2="B"} |
any { } |
检查是否有键值对满足条件 |
map.any { it.key == 2 } // true |
all { } |
检查所有键值对满足条件 |
map.all { it.value is String } // true |
可变映射特有方法
方法 |
说明 |
示例 |
put(key, value) |
添加/更新键值对 |
mMap.put("k3", 3) |
remove(key) |
移除键值对 |
mMap.remove("k1") |
clear() |
清空映射 |
mMap.clear() |
putAll(other) |
添加多个键值对 |
mMap.putAll(mapOf("k4" to 4, "k5" to 5)) |
getOrPut(key) { value } |
获取或创建值 |
mMap.getOrPut("new") { 100 } |
compute(key) { } |
计算新值 |
mMap.compute("k1") { k, v -> v?.times(2) } |
五、通用集合方法
以下方法适用于所有集合类型(Array, List, Set, Map):
方法 |
说明 |
示例 |
isEmpty() |
检查是否为空 |
list.isEmpty() |
isNotEmpty() |
检查是否非空 |
set.isNotEmpty() |
count() |
获取元素数量 |
map.count() |
count { predicate } |
统计满足条件的元素 |
arr.count { it > 5 } |
first() |
获取第一个元素 |
list.first() |
first { predicate } |
获取第一个满足条件的元素 |
set.first { it % 2 == 0 } |
last() |
获取最后一个元素 |
list.last() |
last { predicate } |
获取最后一个满足条件的元素 |
arr.last { it < 10 } |
maxOrNull() |
获取最大值 |
listOf(1,5,2).maxOrNull() // 5 |
minOrNull() |
获取最小值 |
setOf(3,1,4).minOrNull() // 1 |
sum() |
求和(数值集合) |
listOf(1,2,3).sum() // 6 |
average() |
求平均值 |
arrayOf(1.0, 2.0, 3.0).average() // 2.0 |
distinct() |
去重 |
listOf(1,2,2,3).distinct() // [1,2,3] |
groupBy { } |
按条件分组 |
list.groupBy { it.length } |
associateBy { } |
创建映射 |
list.associateBy { it.id } |
partition { } |
分区 |
val (even, odd) = list.partition { it % 2 == 0 } |
zip(other) |
合并两个集合 |
listOf(1,2).zip(listOf("a","b")) // [(1,"a"), (2,"b")] |
take(n) |
取前n个元素 |
list.take(2) |
drop(n) |
丢弃前n个元素 |
set.drop(1) |
chunked(size) |
分块 |
list.chunked(3) |
windowed(size) |
滑动窗口 |
list.windowed(2) |
fold(initial) { } |
累积操作 |
list.fold(0) { acc, i -> acc + i } |
reduce { } |
累积操作(无初始值) |
array.reduce { acc, i -> acc * i } |
filterIsInstance<T>() |
过滤集合,返回指定类型T 的元素组成的列表 |
list.filterIsInstance<String>() |
filterIsInstanceTo(destination) |
将集合中指定类型T 的元素添加到目标集合destination |
list.filterIsInstanceTo(destList) |