跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Kotlin列表
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
{{DISPLAYTITLE:Kotlin列表}} '''Kotlin列表'''是Kotlin标准库中提供的一种重要的[[集合类型]],用于存储有序的元素序列。列表允许重复元素,并且可以通过索引访问元素。Kotlin提供了两种主要的列表类型:'''不可变列表'''(<code>List</code>)和'''可变列表'''(<code>MutableList</code>)。本文将详细介绍Kotlin列表的特性、操作方法以及实际应用场景。 == 列表概述 == 在Kotlin中,列表是一种线性数据结构,可以存储多个相同或不同类型的元素。列表的主要特点包括: * '''有序性''':元素按照插入顺序存储。 * '''可重复性''':允许存储重复的元素。 * '''索引访问''':可以通过从0开始的整数索引访问元素。 Kotlin的列表分为两种: * '''不可变列表'''(<code>List</code>):创建后不能修改其内容(不能添加、删除或更改元素)。 * '''可变列表'''(<code>MutableList</code>):创建后可以修改其内容。 == 创建列表 == Kotlin提供了多种创建列表的方法: === 使用<code>listOf</code>创建不可变列表 === <syntaxhighlight lang="kotlin"> val immutableList = listOf("Apple", "Banana", "Cherry") println(immutableList) // 输出: [Apple, Banana, Cherry] </syntaxhighlight> === 使用<code>mutableListOf</code>创建可变列表 === <syntaxhighlight lang="kotlin"> val mutableList = mutableListOf(1, 2, 3) mutableList.add(4) println(mutableList) // 输出: [1, 2, 3, 4] </syntaxhighlight> === 使用<code>emptyList</code>创建空列表 === <syntaxhighlight lang="kotlin"> val emptyList = emptyList<String>() println(emptyList) // 输出: [] </syntaxhighlight> == 列表操作 == Kotlin为列表提供了丰富的操作方法,以下是一些常用操作: === 访问元素 === <syntaxhighlight lang="kotlin"> val fruits = listOf("Apple", "Banana", "Cherry") println(fruits[1]) // 输出: Banana (通过索引访问) println(fruits.first()) // 输出: Apple (第一个元素) println(fruits.last()) // 输出: Cherry (最后一个元素) </syntaxhighlight> === 修改可变列表 === <syntaxhighlight lang="kotlin"> val numbers = mutableListOf(1, 2, 3) numbers[1] = 20 // 修改第二个元素 numbers.add(4) // 添加元素 numbers.removeAt(0) // 移除第一个元素 println(numbers) // 输出: [20, 3, 4] </syntaxhighlight> === 列表遍历 === <syntaxhighlight lang="kotlin"> val colors = listOf("Red", "Green", "Blue") // 使用for循环 for (color in colors) { println(color) } // 使用forEach函数 colors.forEach { color -> println(color) } </syntaxhighlight> === 常用高阶函数 === Kotlin为列表提供了许多有用的高阶函数: <syntaxhighlight lang="kotlin"> val numbers = listOf(1, 2, 3, 4, 5) // map: 转换每个元素 val squares = numbers.map { it * it } println(squares) // 输出: [1, 4, 9, 16, 25] // filter: 过滤元素 val evens = numbers.filter { it % 2 == 0 } println(evens) // 输出: [2, 4] // reduce: 累积操作 val sum = numbers.reduce { acc, num -> acc + num } println(sum) // 输出: 15 </syntaxhighlight> == 列表性能考虑 == Kotlin的<code>List</code>接口默认实现是<code>ArrayList</code>,其性能特征如下: {| class="wikitable" |+ 列表操作时间复杂度 |- ! 操作 !! 时间复杂度 |- | 按索引访问 (<code>get</code>) || O(1) |- | 添加元素到末尾 (<code>add</code>) || O(1) 平均 |- | 在指定位置插入/删除 (<code>add(index)</code>, <code>removeAt</code>) || O(n) |- | 搜索元素 (<code>contains</code>, <code>indexOf</code>) || O(n) |} == 实际应用案例 == === 案例1:购物车系统 === <syntaxhighlight lang="kotlin"> class ShoppingCart { private val items = mutableListOf<String>() fun addItem(item: String) = items.add(item) fun removeItem(item: String) = items.remove(item) fun getItems(): List<String> = items.toList() fun clear() = items.clear() } fun main() { val cart = ShoppingCart() cart.addItem("Laptop") cart.addItem("Mouse") cart.addItem("Keyboard") println("Cart items: ${cart.getItems()}") cart.removeItem("Mouse") println("After removal: ${cart.getItems()}") } </syntaxhighlight> === 案例2:学生成绩处理 === <syntaxhighlight lang="kotlin"> data class Student(val name: String, val score: Int) fun main() { val students = listOf( Student("Alice", 85), Student("Bob", 72), Student("Charlie", 90) ) // 找出最高分 val topStudent = students.maxByOrNull { it.score } println("Top student: ${topStudent?.name} with ${topStudent?.score}") // 计算平均分 val average = students.map { it.score }.average() println("Average score: $average") } </syntaxhighlight> == 列表与其他集合的比较 == Kotlin提供了多种集合类型,以下是列表与其他主要集合类型的比较: {| class="wikitable" |+ 集合类型比较 |- ! 特性 !! List !! Set !! Map |- | 元素顺序 || 保留 || 不保留 || 不保留 |- | 重复元素 || 允许 || 不允许 || 键不允许重复 |- | 访问方式 || 索引 || 无索引 || 键访问 |} == 高级主题 == === 不可变列表的优势 === 不可变列表(<code>List</code>)在多线程环境下更安全,因为它们不能被修改,从而避免了并发修改的问题。此外,不可变列表在函数式编程中非常重要,因为它们支持无副作用的操作。 === 列表视图 === Kotlin提供了创建列表视图的方法,这些视图是原始列表的转换,但不创建新的列表: <syntaxhighlight lang="kotlin"> val numbers = listOf(1, 2, 3, 4, 5) val evenNumbers = numbers.filter { it % 2 == 0 } // 创建新列表 val evenNumbersView = numbers.asSequence().filter { it % 2 == 0 } // 创建视图 println(evenNumbers) // 输出: [2, 4] println(evenNumbersView.toList()) // 输出: [2, 4] </syntaxhighlight> === 列表的协变特性 === Kotlin的<code>List</code>接口是协变的(covariant),这意味着如果<code>Dog</code>是<code>Animal</code>的子类,那么<code>List<Dog></code>可以被当作<code>List<Animal></code>使用: <syntaxhighlight lang="kotlin"> open class Animal class Dog : Animal() fun printAnimals(animals: List<Animal>) { animals.forEach { println(it) } } fun main() { val dogs: List<Dog> = listOf(Dog(), Dog()) printAnimals(dogs) // 可以传递List<Dog>给期望List<Animal>的函数 } </syntaxhighlight> == 总结 == Kotlin列表是处理有序元素集合的强大工具。通过理解不可变列表和可变列表的区别,以及掌握各种列表操作方法,开发者可以有效地在Kotlin程序中管理和处理数据集合。列表的高阶函数支持使Kotlin代码更加简洁和表达力强,而性能特征的了解则有助于编写高效的代码。 在实际开发中,应根据需求选择合适的列表类型:当需要修改集合时使用<code>MutableList</code>,当集合不需要修改时使用不可变的<code>List</code>以获得更好的线程安全性和函数式编程支持。 [[Category:编程语言]] [[Category:Kotlin]] [[Category:Kotlin数据结构]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)