Skip to Content
使用 Kotlin 进行 Android 编程
book

使用 Kotlin 进行 Android 编程

by Pierre-Olivier Laurence, Amanda Hinchman-Dominguez, G. Blake Meike, Mike Dunn
May 2025
Beginner to intermediate content levelBeginner to intermediate
354 pages
4h 24m
Chinese
O'Reilly Media, Inc.
Book available
Content preview from 使用 Kotlin 进行 Android 编程

第 2 章 Kotlin 集合框架 Kotlin 集合框架

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

在上一章中,我们概述了 Kotlin 语言的语法。 对于任何语言来说,语法都是基础,但也仅此而已。 要完成实际工作,光靠语法是不够的。 要做到这一点,你需要表达式和惯用语,这些表达式和惯用语很容易组合成有用的代码,而且其他开发人员也很容易理解和修改。

几乎所有现代语言的一个重要方面都是其集合框架:将对象分组的方法以及操作对象的函数库。

Java 的集合框架在推出之初是最先进的。20 多年后的今天,较新语言提供的基本数据结构并没有太大变化。 我们熟悉的 Java 框架中的所有容器(甚至是最早版本的 C++stdlib )都还在:Iterable,Collection, List,Set, 和Map (使用它们的 Java 名称)。不过,为了响应对函数式编程风格的广泛接受,Swift 和 Scala 等现代语言的集合框架通常会提供一系列通用的高阶函数,用于对集合进行操作:filtermapflatmapzip 等。您确实可以在 Kotlin 标准库的集合框架中找到这些函数。

在本章中,我们将首先访问集合本身以及 Kotlin 语言所支持的一些有趣扩展。之后,我们将深入探讨对集合进行操作的一些强大的高阶函数。

收藏基础知识

Kotlin 的集合框架嵌入了 Java 集合框架中的数据结构作为子集。 它用一些新功能包装了 Java 的基本类,并添加了对它们进行操作的功能转换。

让我们从快速了解数据结构本身的一些扩展开始,深入了解集合库。

Java 互操作性

由于与 Java 的无缝互操作性是 Kotlin 语言的核心目标,因此 Kotlin 的集合数据类型是基于其 Java 对应类型的。图 2-1说明了两者之间的关系。

Kotlin Collections
图 2-1. Kotlin 集合类型层次结构及其与 Java 的关系。

通过将 Kotlin 集合类型作为 Java 类似类型的子类型,Kotlin 保留了 Java 集合框架的所有功能。在大多数情况下,Kotlin 扩展但不改变 Java 框架。 它只是添加了新的功能性方法。

有一个重要的例外:可变性。

可变性

一种在语法中包含可变性的语言,也会在其集合系统中包含可变性,这也许是合乎逻辑的。

Kotlin 在其集合框架中定义了两种不同的类型层次结构,一种用于可变集合,另一种用于不可变集合。从例 2-1 中可以看出这一点。

例 2-1. 可变列表和不可变列表
val mutableList = mutableListOf(1, 2, 4, 5)
val immutableList = listOf(1, 2, 4, 5)
mutableList.add(4)    // compiles

// doesn't compile: ImmutableList has no `add` method.
immutableList.add(2)
备注

可变不可变正好相反。可变对象可以更改,不可变对象则不能更改。在优化代码时,这种区别至关重要。由于不可变对象不能改变,因此可以在多个线程之间安全地共享。然而,如果要共享可变对象,就必须明确地使其线程安全。线程安全需要锁定或复制,这可能会很昂贵。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Java 到 Kotlin

Java 到 Kotlin

Duncan McGregor, Nat Pryce
《Java 思维》,第二版

《Java 思维》,第二版

Allen B. Downey, Chris Mayfield

Publisher Resources

ISBN: 9798341659131Supplemental Content