先用人话理解
集合是管理一组数据的容器。`List` 保留顺序并允许重复;`Set` 只保留不同的元素;`Map` 用键查找对应的值。Kotlin 常见的 `listOf`、`setOf` 和 `mapOf` 创建只读集合接口的实例。
记住这一点
`cart[0]` 的索引从 0 开始。`mapOf` 查找不存在的键时会返回 `null`,所以结果类型可能是可空类型。只读集合不提供通过该引用修改元素的操作,但不等于底层数据在所有情况下都绝对不可变。
`cart[0]` 的索引从 0 开始。`mapOf` 查找不存在的键时会返回 `null`,所以结果类型可能是可空类型。只读集合不提供通过该引用修改元素的操作,但不等于底层数据在所有情况下都绝对不可变。
看一段代码
先看整体,再留意每一行的中文注释。可以复制到 Kotlin Playground 亲自运行。
Kotlin · 1.9+
fun main() {
val cart = listOf("面包", "牛奶", "面包") // List 可以有重复项
println(cart[0]) // 通过索引取第一个元素
println(cart.size) // 元素数量是 3
val tags = setOf("Kotlin", "Android", "Kotlin") // Set 自动去重
println(tags.size) // 不同元素数量是 2
val contacts = mapOf( // Map 用姓名作为键,电话作为值
"小林" to "13800000000",
"小周" to "13900000000"
)
println(contacts["小林"]) // 通过键查找;也可能查不到,结果可为空
}轮到你动手
抄下来,改一改
给购物车再加两项;创建一个只包含不同城市名的 Set;在 Map 中添加一位联系人。
小提示:先让原代码成功运行,再一次只改一个地方。
三道小测
先自己选答案,再展开核对。答案不会自动揭晓。
1. 哪种集合允许重复元素并保留顺序?
2. Set 的主要特点是什么?
3. Map 通过什么找到对应值?
1. A. List。
2. B. Set 中元素不重复。
3. B. Map 通过键查找值。
深入阅读
官方集合概览介绍集合类型、只读接口和常见操作。
https://kotlinlang.org/docs/collections-overview.html ↗