当今移动应用开发,常常需求运用各种调集类型来存储和操作数据。Kotlin 供给了 Collection KTX 扩展库,为咱们操作调集供给了非常方便的 API。在本篇文章中,咱们将介绍 Collection KTX 中包括的一切扩展函数,让你的调集操作变得更加高效、简单、易读。
除了 Collection KTX,Kotlin 还供给了许多其他扩展库,例如 Android KTX、Coroutines、Serialization KTX 等,它们都能够大大简化咱们的开发流程。在接下来的文章中,咱们还将为您介绍这些扩展库的详细信息,让你的 Kotlin 开发之路更加四通八达
运用
dependencies {
implementation "androidx.collection:collection-ktx:1.2.0"
}
用法合集
Collection 扩展函数
-
filterNot()
:过滤掉指定元素后的新 Collection。 -
filterNotNull()
:过滤掉null
元素后的新 Collection。
List 扩展函数
-
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。
MutableList 扩展函数
-
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]
Set 扩展函数
-
minus()
:删去指定元素后的新 Set。 -
plus()
:增加指定元素后的新 Set。 -
partition()
:按指定条件分隔后的 Pair。 -
groupBy()
:按指定方法分组后的 Map。 -
associate()
:按指定方法相关后的新 Map。 -
associateBy()
:按指定方法相关键后的新 Map。 -
associateWith()
:按指定方法相关值后的新 Map。
MutableSet 扩展函数
-
remove()
:移除指定元素,并回来是否移除成功。 -
retainAll()
:仅保存契合指定条件的元素。 -
addAll()
:增加指定元素后的新 MutableSet。
Map 扩展函数
-
minus()
:删去指定键对应的元素后的新 Map。 -
plus()
:增加指定键值对后的新 Map。 -
partition()
:按指定条件分隔后的 Pair。 -
filterKeys()
:按指定条件过滤键后的新 Map。 -
filterValues()
:按指定条件过滤值后的新 Map。 -
mapKeys()
:按指定方法映射键后的新 Map。 -
mapValues()
: 按指定方法映射值后的新map
MutableMap 扩展函数
-
remove()
:移除指定键对应的元素,并回来该元素。 -
putAll()
:增加指定键值对后的新 MutableMap。 -
putIfAbsent()
:仅在指定键不存在时增加指定键值对。 -
compute()
:更新指定键对应的元素,并回来更新后的值。 -
computeIfAbsent()
:仅在指定键不存在时更新该键对应的元素。 -
computeIfPresent()
:仅在指定键存在时更新该键对应的元素。
Iterable 扩展函数
-
reduceOrNull()
:对一切元素进行指定操作,假如为 null 则回来 null。 -
reduceIndexedOrNull()
:对一切元素进行指定操作,一起考虑元素的索引,假如为 null 则回来 null。 -
foldOrNull()
:对一切元素进行指定操作并给定初始值,假如为 null 则回来 null。 -
foldIndexedOrNull()
:对一切元素进行指定操作并给定初始值,一起考虑元素的索引,假如为 null 则回来 null。
ListIterator 扩展函数
-
previousOrNull()
:回来上一个元素,假如不存在则回来 null。
Sequence 扩展函数
-
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
了解东西的尿性
东西的责任就是进步工作效率
- 运用 Collection KTX 能够大大简化调集操作的代码,使代码更加简练易读,一起能够进步代码的可维护性
- 在运用调集时,应该尽可能运用 Kotlin 标准库中的函数和 Collection KTX 中的扩展函数,而不是手写循环或经过 Java API 进行操作,这能够削减代码量和进步代码可读性。
- 了解不同的调集类型及其特性,挑选合适的调集类型能够使代码更加高效。例如,假如需求频繁增加或删去元素,则应该运用可变调集类型。
- 防止频繁进行调集类型的转化,由于这会导致性能下降。假如需求对调集进行不同的操作,能够考虑运用不同的调集类型来解决。
- 尽量防止对空调集进行操作,由于这可能会导致空指针异常。在运用 Collection KTX 时,能够运用非空断语或许空安全操作符来处理可能为空的调集。
当然运用时也要注意,kotlin 的扩展函数让代码的可读性要求增高了少,所以用的运用为了能保证团队的统一,因该注意:
- 对于代码中的扩展函数,应该在函数称号中体现其作用,以便其他开发者更容易了解代码。例如,“find”函数能够改名为“findFirstOrNull”或“findLastOrNull”。
- 在运用 Collection KTX 时,应该注意性能问题。某些操作可能会导致性能下降,例如对大型调集进行循环和操作,因而应该考虑运用 Sequence 和 Flow 来进步性能。
- 防止重复操作。运用 Collection KTX 能够使代码更加简练和易读,可是不应该过度运用,假如某个操作已经经过一个函数实现了,就不要再手动写同样的操作。