第三部分:函数式编程与并发
第 11 章:集合操作
11.1 列表(List)、集合(Set)、映射(Map)
Kotlin 提供了丰富的集合类型,主要包括 List、Set 和 Map。这些集合类型在 Kotlin 标准库中分为可变(Mutable)和不可变(Immutable)两种形式,开发者可以根据需求选择合适的集合类型。
1. 列表(List)
列表是一种有序的集合,允许重复元素。Kotlin 中的 List 是不可变的,而 MutableList 是可变的。
不可变列表示例:
val numbers: List<Int> = listOf(1, 2, 3, 4, 5)
println(numbers[0]) // 输出:1
可变列表示例:
val mutableNumbers: MutableList<Int> = mutableListOf(1, 2, 3)
mutableNumbers.add(4) // 添加元素
mutableNumbers.remove(2) // 移除元素
println(mutableNumbers) // 输出:[1, 3, 4]
2. 集合(Set)
集合是一种无序的集合,不允许重复元素。Kotlin 中的 Set 是不可变的,而 MutableSet 是可变的。
不可变集合示例:
val uniqueNumbers: Set<Int> = setOf(1, 2, 2, 3, 3)
println(uniqueNumbers) // 输出:[1, 2, 3](自动去重)
可变集合示例:
val mutableSet: MutableSet<String> = mutableSetOf("Apple", "Banana")
mutableSet.add("Orange")
mutableSet.remove("Apple")
println(mutableSet) // 输出:[Banana, Orange]
3. 映射(Map)
映射是一种键值对(Key-Value)集合,键是唯一的。Kotlin 中的 Map 是不可变的,而 MutableMap 是可变的。
不可变映射示例:
val userAges: Map<String, Int> = mapOf("Alice" to 25, "Bob" to 30)
println(userAges["Alice"]) // 输出:25
可变映射示例:
val mutableMap: MutableMap<String, Int> = mutableMapOf("Alice" to 25)
mutableMap["Bob"] = 30 // 添加键值对
mutableMap.remove("Alice") // 移除键值对
println(mutableMap) // 输出:{Bob=30}
集合的常用操作
Kotlin 为集合提供了丰富的操作函数,例如:
filter:过滤元素。map:转换元素。sorted:排序。groupBy:分组。
示例:
val numbers = listOf(1, 2, 3, 4, 5)
val evenNumbers = numbers.filter { it % 2 == 0 }
println(evenNumbers) // 输出:[2, 4]
val squaredNumbers = numbers.map { it * it }
println(squaredNumbers) // 输出:[1, 4, 9, 16, 25]
总结
List:有序,允许重复。Set:无序,不允许重复。Map:键值对,键唯一。- 可变集合(
MutableList、MutableSet、MutableMap)支持动态修改,而不可变集合(List、Set、Map)创建后不能更改。
通过合理选择集合类型,可以更高效地处理数据并编写出更简洁的代码。
