Kotlin集合
外观
Kotlin的集合(Collections)是处理数据结构的核心工具,提供了高效、类型安全的方式来存储和操作数据组。Kotlin集合基于Java集合框架,但通过扩展函数和不可变/可变设计增强了功能。本文将全面介绍Kotlin集合的分类、操作及实际应用。
概述[编辑 | 编辑源代码]
Kotlin集合分为两大类:
- **不可变集合(Immutable Collections)**:创建后内容不可修改(如`List`、`Set`、`Map`的默认接口)。
- **可变集合(Mutable Collections)**:支持动态增删元素(如`MutableList`、`MutableSet`、`MutableMap`)。
Kotlin通过扩展函数(如`filter`、`map`)为集合提供函数式编程支持。
集合分类[编辑 | 编辑源代码]
1. 列表(List)[编辑 | 编辑源代码]
列表是有序集合,允许重复元素。
不可变列表示例:
val colors: List<String> = listOf("Red", "Green", "Blue")
println(colors[1]) // 输出: Green
可变列表示例:
val mutableColors: MutableList<String> = mutableListOf("Red", "Green")
mutableColors.add("Blue")
println(mutableColors) // 输出: [Red, Green, Blue]
2. 集合(Set)[编辑 | 编辑源代码]
集合是无序且不重复的集合。
不可变集合示例:
val uniqueNumbers: Set<Int> = setOf(1, 2, 3, 3)
println(uniqueNumbers) // 输出: [1, 2, 3]
3. 映射(Map)[编辑 | 编辑源代码]
映射存储键值对,键唯一。
不可变映射示例:
val capitals: Map<String, String> = mapOf("USA" to "Washington", "France" to "Paris")
println(capitals["France"]) // 输出: Paris
集合操作[编辑 | 编辑源代码]
Kotlin提供丰富的操作函数:
- 过滤:`filter { it > 2 }`
- 映射:`map { it * 2 }`
- 聚合:`sum()`, `average()`
示例:
val numbers = listOf(1, 2, 3, 4)
val evenSquares = numbers.filter { it % 2 == 0 }.map { it * it }
println(evenSquares) // 输出: [4, 16]
实际案例[编辑 | 编辑源代码]
场景:统计文本词频
fun countWords(text: String): Map<String, Int> {
return text.split("\\s+".toRegex())
.groupingBy { it }
.eachCount()
}
val result = countWords("hello world hello kotlin")
println(result) // 输出: {hello=2, world=1, kotlin=1}
性能考虑[编辑 | 编辑源代码]
使用集合时需注意:
- 链式操作(如`filter.map`)会创建中间集合,可用`序列(Sequence)`优化。
- 频繁增删时选择`LinkedList`(通过`java.util.LinkedList`)。
序列示例:
val largeList = (1..1_000_000).toList()
val result = largeList.asSequence().filter { it % 2 == 0 }.map { it * 2 }.toList()
可视化:集合层次结构[编辑 | 编辑源代码]
总结[编辑 | 编辑源代码]
Kotlin集合通过不可变/可变设计和扩展函数,提供了安全且灵活的数据操作方式。掌握集合的分类、操作及性能优化技巧,能显著提升代码质量。