# kotlin list常用操作符 站点:答源(https://www.dandroid.cn/) 原文:https://www.dandroid.cn/archives/20335 Canonical:https://www.dandroid.cn/archives/20335 作者:admin 发布日期:2023-09-15 最后更新:2023-09-15 05:00 分类:教程 内容类型:post 说明:本页是原文的纯文本镜像,供大模型与检索器完整读取;不含导航、广告、付费框。引用请以上方「原文」链接为准。 ## 正文 下标操作类 contains —— 判断是否有指定元素 elementAt —— 返回对应的元素,越界会抛IndexOutOfBoundsException firstOrNull —— 返回符合条件的第一个元素,没有 返回null lastOrNull —— 返回符合条件的最后一个元素,没有 返回null indexOf —— 返回指定元素的下标,没有 返回-1 singleOrNull —— 返回符合条件的单个元素,如有没有符合或超过一个,返回null val list1 = listOf(1, 2, 3, 4, 5, 6) Log.i(TAG, "${list1.contains(2)}") // true Log.i(TAG, "${list1.elementAt(2)}") // 3 Log.i(TAG, "${list1.firstOrNull { it % 2 == 0 }}") // 2 Log.i(TAG, "${list1.lastOrNull { it % 2 == 0 }}") // 6 Log.i(TAG, "${list1.indexOf(1)}") // 0 Log.i(TAG, "${list1.singleOrNull { it % 2 == 0 }}" ) // null 判断类 any —— 判断集合中,是否有满足条件的元素 all —— 判断集合中的元素 是否都满足条件 none —— 判断集合中是否都不满足条件,是则返回true count —— 查询集合中满足条件的元素个数 reduce —— 从第一项到最后一项进行累计 val list2 = listOf(1, 2, 3, 4, 5, 6) Log.i(TAG, "${list2.any { it % 2 == 0 }}") // true Log.i(TAG, "${list2.all { it % 2 == 0 }}") // false Log.i(TAG, "${list2.none { it % 2 == 0 }}") // false Log.i(TAG, "${list2.count { it % 2 == 0 }}") //3 Log.i(TAG, "${list2.reduce { total, next -> total + next }}")// 21 3. 过滤类 take —— 返回前n个元素 filter —— 过滤所有满足条件的元素 filterNot —— 过滤所有不满足条件的元素 filterNotNull —— 过滤所有非null元素 val list3 = listOf(1, 2, 3, 4, 5, 6) Log.i(TAG, "返回前n个元素 => ${list3.take(2)}") // [1, 2] Log.i(TAG, "过滤所有满足条件的元素 => ${list3.filter { it % 2 == 0 }}") // [2, 4, 6] Log.i(TAG, "过滤所有不满足条件的元素 => ${list3.filterNot { it % 2 == 0 }}") // [1, 3, 5] Log.i(TAG, "过滤所有不满足条件的元素 => ${list3.filterNotNull()}") // [1, 2, 3, 4, 5, 6] 转换类 map —— 转换成另一个集合; mapIndexed —— 除了转换成另一个集合,还可以拿到Index(下标); mapNotNull —— 执行转换前过滤掉为NULL的元素 flatMap —— 自定义逻辑合并两个集合; groupBy —— 按照某个条件分组,返回Map; val list4 = listOf(1, 2, 3, 4, 5, 6) Log.i(TAG, "${list4.map { it * 2 }}") //[2, 4, 6, 8, 10, 12] Log.i(TAG, "${list4.mapIndexed { index, it -> index * it }}") //[0, 2, 6, 12, 20, 30] Log.i(TAG, "${list4.mapNotNull { it * 2 }}") //[2, 4, 6, 8, 10, 12] Log.i(TAG, "${list4.flatMap { listOf(it, it + 1) }}") //[1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7] Log.i(TAG, "${list4.groupBy { if (it % 2 == 0) "even" else "odd" }}") //{odd=[1, 3, 5], even=[2, 4, 6]} 5. 排序类 reversed —— 反序 sorted —— 升序 sortedBy —— 自定义排序 sortedDescending —— 降序 val list5 = listOf(6, 2, 4, 3, 5, 1) Log.i(TAG, "反序 => ${list5.reversed()}") //[1, 5, 3, 4, 2, 6] Log.i(TAG, "升序 => ${list5.sorted()}") //[1, 2, 3, 4, 5, 6] Log.i(TAG, "自定义排序 => ${list5.sortedBy { it % 2 }}") //[6, 2, 4, 3, 5, 1] Log.i(TAG, "降序 => ${list5.sortedDescending()}") //[6, 5, 4, 3, 2, 1] --- 由 答源 DAN 底座 1.4.1 生成 · 2026-11-15T06:13:44+00:00