当今移动应用开发,常常需要使用各种集合类型来存储和操作数据。Kotlin 提供了 Collection KTX 扩展库,为我们操作集合提供了非常方便的 API。在本篇文章中,我们将介绍 Collection KTX 中包含的所有扩展函数,让你的集合操作变得更加高效、简单、易读。
除了 Collection KTX,Kotlin 还提供了许多其他扩展库,例如 Android KTX、Coroutines、Serialization KTX 等,它们都可以大大简化我们的开发流程。在接下来的文章中,我们还将为您介绍这些扩展库的详细信息,让你的 Kotlin 开发之路更加畅通无阻
Java 语言可参考 Java Stream:让你的集合操作如丝般顺滑
dependencies {
implementation "androidx.collection:collection-ktx:1.2.0"
}
filterNot()
:过滤掉指定元素后的新 Collection。filterNotNull()
:过滤掉 null
元素后的新 Collection。sorted()
:按自然顺序排序后的新 List。sortedBy()
:按指定方式排序后的新 List。sortedDescending()
:按自然顺序降序排序后的新 List。sortedByDescending()
:按指定方式降序排序后的新 List。distinct()
:去重后的新 List。distinctBy()
:按指定方式去重后的新 List。minus()
:删除指定元素后的新 List。plus()
:添加指定元素后的新 List。drop()
:去掉前几个元素后的新 List。dropWhile()
:去掉符合指定条件的元素后的新 List。take()
:前几个元素组成的新 List。takeWhile()
:符合指定条件的元素组成的新 List。partition()
:按指定条件分隔后的 Pair。groupBy()
:按指定方式分组后的 Map。associate()
:按指定方式关联后的新 Map。associateBy()
:按指定方式关联键后的新 Map。associateWith()
:按指定方式关联值后的新 Map。zip()
:按指定方式组合后的新 List。removeLast()
:移除最后一个元素,并返回该元素。removeFirst()
:移除第一个元素,并返回该元素。move()
:将指定元素移动到新位置。自定义扩展函数fun <T> MutableList<T>.move(fromIndex: Int, toIndex: Int) {
if (fromIndex == toIndex) {
// 如果源索引和目标索引相等,则不需要移动元素
return
}
val element = this[fromIndex]
removeAt(fromIndex)
add(toIndex, element)
}
eg:
val list = mutableListOf("a", "b", "c", "d", "e")
list.move(1, 3)
println(list) // 输出:[a, c, d, b, e]
minus()
:删除指定元素后的新 Set。plus()
:添加指定元素后的新 Set。partition()
:按指定条件分隔后的 Pair。groupBy()
:按指定方式分组后的 Map。associate()
:按指定方式关联后的新 Map。associateBy()
:按指定方式关联键后的新 Map。associateWith()
:按指定方式关联值后的新 Map。remove()
:移除指定元素,并返回是否移除成功。retainAll()
:仅保留符合指定条件的元素。addAll()
:添加指定元素后的新 MutableSet。minus()
:删除指定键对应的元素后的新 Map。plus()
:添加指定键值对后的新 Map。partition()
:按指定条件分隔后的 Pair。filterKeys()
:按指定条件过滤键后的新 Map。filterValues()
:按指定条件过滤值后的新 Map。mapKeys()
:按指定方式映射键后的新 Map。mapValues()
: 按指定方式映射值后的新mapremove()
:移除指定键对应的元素,并返回该元素。putAll()
:添加指定键值对后的新 MutableMap。putIfAbsent()
:仅在指定键不存在时添加指定键值对。compute()
:更新指定键对应的元素,并返回更新后的值。computeIfAbsent()
:仅在指定键不存在时更新该键对应的元素。computeIfPresent()
:仅在指定键存在时更新该键对应的元素。reduceOrNull()
:对所有元素进行指定操作,如果为 null 则返回 null。reduceIndexedOrNull()
:对所有元素进行指定操作,同时考虑元素的索引,如果为 null 则返回 null。foldOrNull()
:对所有元素进行指定操作并给定初始值,如果为 null 则返回 null。foldIndexedOrNull()
:对所有元素进行指定操作并给定初始值,同时考虑元素的索引,如果为 null 则返回 null。previousOrNull()
:返回上一个元素,如果不存在则返回 null。reduceOrNull()
:对所有元素进行指定操作,如果为 null 则返回 null。reduceIndexedOrNull()
:对所有元素进行指定操作,同时考虑元素的索引,如果为 null 则返回 null。foldOrNull()
:对所有元素进行指定操作并给定初始值,如果为 null 则返回 null。foldIndexedOrNull()
:对所有元素进行指定操作并给定初始值,同时考虑元素的索引,如果为 null 则返回 null。distinct()
:去重后的新 Sequence。distinctBy()
:按指定方式去重后的新 Sequence。filterNotNull()
:过滤掉 null
元素后的新 Sequence。filterNot()
:过滤掉指定元素后的新 Sequence。partition()
:按指定条件分隔后的 Pair。sorted()
:按自然顺序排序后的新 Sequence。sortedBy()
:按指定方式排序后的新 Sequence。sortedDescending()
:按自然顺序降序排序后的新 Sequence。sortedByDescending()
:按指定方式降序排序后的新 Sequence。take()
:前几个元素组成的新 Sequence。takeWhile()
:符合指定条件的元素组成的新 Sequence。zip()
:按指定方式组合后的新 Sequence工具的职责就是提高工作效率
当然使用时也要注意,kotlin 的扩展函数让代码的可读性要求增高了少,所以用的使用为了能保证团队的统一,因该注意: