KOTLIN BASICS · LESSON 05

集合

把多个数据组织起来。用 List、Set、Map 表达清单、去重数据和键值对应关系。

预计 8 分钟可在 Playground 练习

先用人话理解

集合是管理一组数据的容器。`List` 保留顺序并允许重复;`Set` 只保留不同的元素;`Map` 用键查找对应的值。Kotlin 常见的 `listOf`、`setOf` 和 `mapOf` 创建只读集合接口的实例。

记住这一点
`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 通过什么找到对应值?

深入阅读

官方集合概览介绍集合类型、只读接口和常见操作。

https://kotlinlang.org/docs/collections-overview.html ↗