kotlin于Java相比优势自然是语法糖
一、创建与初始化
方法 | 功能简述 |
listOf() | 创建不可变列表 |
mutableListOf() | 创建可变列表 |
emptyList() | 创建空列表 |
List(size) { initFunction } | 创建指定大小并用函数初始化的列表 |
二、元素访问
方法 | 功能简述 |
get(index) / [index] | 获取指定位置元素 |
first() | 获取第一个元素 |
last() | 获取最后一个元素 |
elementAt(index) | 获取指定位置元素 |
elementAtOrElse(index) { defaultValue } | 安全获取元素,越界返回默认值 |
elementAtOrNull(index) | 安全获取元素,越界返回null |
indexOf(element) | 返回元素首次出现的索引 |
lastIndexOf(element) | 返回元素最后一次出现的索引 |
indexOfFirst { predicate } | 返回第一个满足条件的元素索引 |
indexOfLast { predicate } | 返回最后一个满足条件的元素索引 |
三、元素操作
方法 | 功能简述 |
contains(element) | 检查是否包含元素 |
containsAll(collection) | 检查是否包含所有指定元素 |
isEmpty() | 检查列表是否为空 |
isNotEmpty() | 检查列表是否非空 |
subList(from, to) | 获取子列表 |
slice(indices) | 按索引集合获取子列表 |
四、遍历操作
方法 | 功能简述 |
forEach { action } | 对每个元素执行操作 |
forEachIndexed { index, element -> action } | 带索引的遍历 |
onEach { action } | 遍历并返回原列表(可用于链式调用) |
iterator() | 返回列表迭代器 |
五、转换操作
方法 | 功能简述 |
map { transform } | 转换每个元素 |
mapIndexed { index, element -> transform } | 带索引的转换 |
mapNotNull { transform } | 转换并过滤null结果 |
flatMap { transform } | 转换每个元素为集合后扁平化 |
flatten() | 扁平化嵌套集合 |
zip(otherList) | 两个列表合并为Pair列表 |
unzip() | Pair列表分解为两个列表 |
joinToString() | 将列表转为字符串 |
toSet() | 转换为Set |
toMutableList() | 转换为可变列表 |
六、过滤操作
方法 | 功能简述 |
filter { predicate } | 过滤满足条件的元素 |
filterNot { predicate } | 过滤不满足条件的元素 |
filterIndexed { index, element -> predicate } | 带索引的过滤 |
filterIsInstance<T>() | 过滤指定类型元素 |
filterNotNull() | 过滤null元素 |
take(n) | 取前n个元素 |
takeLast(n) | 取最后n个元素 |
takeWhile { predicate } | 取满足条件的连续元素 |
drop(n) | 丢弃前n个元素 |
dropLast(n) | 丢弃最后n个元素 |
dropWhile { predicate } | 丢弃满足条件的连续元素 |
distinct() | 去除重复元素 |
distinctBy { selector } | 根据选择器去除重复元素 |
七、排序操作
方法 | 功能简述 |
sorted() | 自然排序 |
sortedBy { selector } | 根据选择器排序 |
sortedDescending() | 自然逆序排序 |
sortedByDescending { selector } | 根据选择器逆序排序 |
reversed() | 反转列表顺序 |
shuffle() | 随机打乱顺序 |
八、聚合操作
方法 | 功能简述 |
any() | 判断是否至少有一个元素 |
any { predicate } | 判断是否至少有一个元素满足条件 |
all { predicate } | 判断所有元素是否满足条件 |
none() | 判断是否没有元素 |
none { predicate } | 判断是否没有元素满足条件 |
count() | 返回元素总数 |
count { predicate } | 返回满足条件的元素数量 |
sum() | 数值列表求和 |
sumBy { selector } | 根据选择器求和 |
average() | 数值列表求平均值 |
min() | 返回最小元素 |
max() | 返回最大元素 |
minBy { selector } | 根据选择器返回最小值 |
maxBy { selector } | 根据选择器返回最大值 |
reduce { acc, element -> operation } | 累积操作 |
reduceIndexed { index, acc, element -> operation } | 带索引的累积 |
fold(initial) { acc, element -> operation } | 带初始值的累积 |
foldIndexed(initial) { index, acc, element -> operation } | 带索引和初始值的累积 |
九、可变列表特有操作
方法 | 功能简述 |
add(element) | 添加元素 |
add(index, element) | 在指定位置插入元素 |
addAll(collection) | 添加多个元素 |
remove(element) | 移除指定元素 |
removeAt(index) | 移除指定位置元素 |
removeAll(collection) | 移除多个元素 |
retainAll(collection) | 保留指定元素 |
clear() | 清空列表 |
set(index, element) | 设置指定位置元素 |
fill(element) | 用指定值填充整个列表 |
replaceAll { transform } | 替换所有元素 |
sort() | 原地排序 |
sortBy { selector } | 根据选择器原地排序 |
reverse() | 原地反转 |
十、分组与分区
方法 | 功能简述 |
groupBy { keySelector } | 按选择器分组 |
groupingBy { keySelector } | 创建分组源 |
partition { predicate } | 根据条件分区为两个列表 |
chunked(size) | 将列表分割为指定大小的块 |
windowed(size) | 滑动窗口获取子列表 |
这些方法使得 Kotlin 的列表操作非常强大且表达力强,可以轻松处理各种集合操作需求。