- Kotlin 教程
- Kotlin - 首页
- Kotlin - 概述
- Kotlin - 环境设置
- Kotlin - 架构
- Kotlin - 基本语法
- Kotlin - 注释
- Kotlin - 关键字
- Kotlin - 变量
- Kotlin - 数据类型
- Kotlin - 运算符
- Kotlin - 布尔值
- Kotlin - 字符串
- Kotlin - 数组
- Kotlin - 范围
- Kotlin - 函数
- Kotlin 控制流
- Kotlin - 控制流
- Kotlin - if...Else 表达式
- Kotlin - When 表达式
- Kotlin - For 循环
- Kotlin - While 循环
- Kotlin - Break 和 Continue
- Kotlin 集合
- Kotlin - 集合
- Kotlin - 列表
- Kotlin - 集合
- Kotlin - 映射
- Kotlin 对象和类
- Kotlin - 类和对象
- Kotlin - 构造函数
- Kotlin - 继承
- Kotlin - 抽象类
- Kotlin - 接口
- Kotlin - 可见性控制
- Kotlin - 扩展
- Kotlin - 数据类
- Kotlin - 密封类
- Kotlin - 泛型
- Kotlin - 委托
- Kotlin - 解构声明
- Kotlin - 异常处理
- Kotlin 有用资源
- Kotlin - 快速指南
- Kotlin - 有用资源
- Kotlin - 讨论
Kotlin - 列表
Kotlin 列表是有序的项目集合。Kotlin 列表可以是可变的(mutableListOf)或只读的(listOf)。列表的元素可以使用索引访问。Kotlin 可变或不可变列表可以包含重复元素。
创建 Kotlin 列表
对于列表创建,使用标准库函数listOf()用于只读列表,mutableListOf()用于可变列表。
为了防止意外修改,通过将可变列表转换为 List 来获取其只读视图。
示例
fun main() { val theList = listOf("one", "two", "three", "four") println(theList) val theMutableList = mutableListOf("one", "two", "three", "four") println(theMutableList) }
运行以上 Kotlin 程序时,将生成以下输出
[one, two, three, four] [one, two, three, four]
遍历 Kotlin 列表
有多种方法可以遍历 Kotlin 列表。让我们逐一学习它们
使用 toString() 函数
fun main() { val theList = listOf("one", "two", "three", "four") println(theList.toString()) }
运行以上 Kotlin 程序时,将生成以下输出
[one, two, three, four]
使用迭代器
fun main() { val theList = listOf("one", "two", "three", "four") val itr = theList.listIterator() while (itr.hasNext()) { println(itr.next()) } }
运行以上 Kotlin 程序时,将生成以下输出
one two three four
使用 for 循环
fun main() { val theList = listOf("one", "two", "three", "four") for (i in theList.indices) { println(theList[i]) } }
运行以上 Kotlin 程序时,将生成以下输出
one two three four
使用 forEach
fun main() { val theList = listOf("one", "two", "three", "four") theList.forEach { println(it) } }
运行以上 Kotlin 程序时,将生成以下输出
one two three four
注意 - 这里的it在 Java 中类似于this运算符。
Kotlin 列表的大小
我们可以使用size属性获取列表中元素的总数
fun main() { val theList = listOf("one", "two", null, "four", "five") println("Size of the list " + theList.size) }
运行以上 Kotlin 程序时,将生成以下输出
Size of the list 5
"in" 运算符
in运算符可用于检查列表中是否存在某个元素。
示例
fun main() { val theList = listOf("one", "two", "three", "four") if("two" in theList){ println(true) }else{ println(false) } }
运行以上 Kotlin 程序时,将生成以下输出
true
contain() 方法
contain()方法也可用于检查列表中是否存在某个元素。
示例
fun main() { val theList = listOf("one", "two", "three", "four") if(theList.contains("two")){ println(true) }else{ println(false) } }
运行以上 Kotlin 程序时,将生成以下输出
true
isEmpty() 方法
如果集合为空(不包含任何元素),isEmpty()方法返回true,否则返回false。
示例
fun main() { val theList = listOf("one", "two", "three", "four") if(theList.isEmpty()){ println(true) }else{ println(false) } }
运行以上 Kotlin 程序时,将生成以下输出
false
indexOf() 方法
indexOf()方法返回列表中指定元素第一次出现的索引,如果列表中不包含指定元素,则返回 -1。
示例
fun main() { val theList = listOf("one", "two", "three", "four") println("Index of 'two' : " + theList.indexOf("two")) }
运行以上 Kotlin 程序时,将生成以下输出
Index of 'two' : 1
get() 方法
get()方法可用于获取列表中指定索引处的元素。第一个元素的索引为零。
示例
fun main() { val theList = listOf("one", "two", "three", "four") println("Element at 3rd position " + theList.get(2)) }
运行以上 Kotlin 程序时,将生成以下输出
Element at 3rd position three
列表添加
我们可以使用+运算符将两个或多个列表添加到一个列表中。这会将第二个列表添加到第一个列表中,即使重复元素也会被添加。
示例
fun main() { val firstList = listOf("one", "two", "three") val secondList = listOf("four", "five", "six") val resultList = firstList + secondList println(resultList) }
运行以上 Kotlin 程序时,将生成以下输出
[one, two, three, four, five, six]
列表减法
我们可以使用-运算符从另一个列表中减去一个列表。此操作将从第一个列表中删除公共元素并返回结果。
示例
fun main() { val firstList = listOf("one", "two", "three") val secondList = listOf("one", "five", "six") val resultList = firstList - secondList println(resultList) }
运行以上 Kotlin 程序时,将生成以下输出
[two, three]
列表切片
我们可以使用slice()方法从给定列表中获取子列表,该方法利用元素索引的范围。
示例
fun main() { val theList = listOf("one", "two", "three", "four", "five") val resultList = theList.slice( 2..4) println(resultList) }
运行以上 Kotlin 程序时,将生成以下输出
[three, four, five]
删除列表中的 null
我们可以使用filterNotNull()方法从 Kotlin 列表中删除null元素。
fun main() { val theList = listOf("one", "two", null, "four", "five") val resultList = theList.filterNotNull() println(resultList) }
运行以上 Kotlin 程序时,将生成以下输出
[one, two, four, five]
过滤元素
我们可以使用filter()方法过滤出与给定谓词匹配的元素。
fun main() { val theList = listOf(10, 20, 30, 31, 40, 50, -1, 0) val resultList = theList.filter{ it > 30} println(resultList) }
运行以上 Kotlin 程序时,将生成以下输出
[31, 40, 50]
删除前 N 个元素
我们可以使用drop()方法删除列表中的前 N 个元素。
fun main() { val theList = listOf(10, 20, 30, 31, 40, 50, -1, 0) val resultList = theList.drop(3) println(resultList) }
运行以上 Kotlin 程序时,将生成以下输出
[31, 40, 50, -1, 0]
分组列表元素
我们可以使用groupBy()方法对与给定谓词匹配的元素进行分组。
fun main() { val theList = listOf(10, 12, 30, 31, 40, 9, -3, 0) val resultList = theList.groupBy{ it % 3} println(resultList) }
运行以上 Kotlin 程序时,将生成以下输出
{1=[10, 31, 40], 0=[12, 30, 9, -3, 0]}
映射列表元素
我们可以使用map()方法使用提供的函数映射所有元素。
fun main() { val theList = listOf(10, 12, 30, 31, 40, 9, -3, 0) val resultList = theList.map{ it / 3 } println(resultList) }
运行以上 Kotlin 程序时,将生成以下输出
[3, 4, 10, 10, 13, 3, -1, 0]
列表元素分块
我们可以使用chunked()方法从列表中创建给定大小的块。根据列表中元素的总数,最后一个块的元素数量可能与块大小不相同。
fun main() { val theList = listOf(10, 12, 30, 31, 40, 9, -3, 0) val resultList = theList.chunked(3) println(resultList) }
运行以上 Kotlin 程序时,将生成以下输出
[[10, 12, 30], [31, 40, 9], [-3, 0]]
列表元素窗口化
我们可以使用windowed()方法通过在元素集合上移动给定大小的滑动窗口来创建元素范围列表。
fun main() { val theList = listOf(10, 12, 30, 31, 40, 9, -3, 0) val resultList = theList.windowed(3) println(resultList) }
运行以上 Kotlin 程序时,将生成以下输出
[[10, 12, 30], [12, 30, 31], [30, 31, 40], [31, 40, 9], [40, 9, -3], [9, -3, 0]]
默认情况下,滑动窗口每次移动一步,但我们可以通过传递自定义步长值来更改它
fun main() { val theList = listOf(10, 12, 30, 31, 40, 9, -3, 0) val resultList = theList.windowed(3, 3) println(resultList) }
运行以上 Kotlin 程序时,将生成以下输出
[[10, 12, 30], [31, 40, 9]]
Kotlin 可变列表
我们可以使用mutableListOf()创建可变列表,稍后我们可以使用add()在同一列表中添加更多元素,并且可以使用remove()方法从列表中删除元素。
fun main() { val theList = mutableSetOf(10, 20, 30) theList.add(40) theList.add(50) println(theList) theList.remove(10) theList.remove(30) println(theList) }
运行以上 Kotlin 程序时,将生成以下输出
[10, 20, 30, 40, 50] [20, 40, 50]
测验时间 (面试与考试准备)
答案:A
解释
get() 方法用于从给定索引获取列表元素。