- 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 集合可以是可变的(mutableSetOf)或只读的(setOf)。Kotlin 可变或不可变集合不允许包含重复元素。
创建 Kotlin 集合
对于集合创建,请使用标准库函数 setOf() 用于只读集合,mutableSetOf() 用于可变集合。
可以通过将其转换为 Set 来获得可变集合的只读视图。
示例
fun main() { val theSet = setOf("one", "two", "three", "four") println(theSet) val theMutableSet = mutableSetOf("one", "two", "three", "four") println(theMutableSet) }
运行上述 Kotlin 程序时,将生成以下输出
[one, two, three, four] [one, two, three, four]
遍历 Kotlin 集合
有多种方法可以遍历 Kotlin 集合。让我们逐一学习它们
使用 toString() 函数
fun main() { val theSet = setOf("one", "two", "three", "four") println(theSet.toString()) }
运行上述 Kotlin 程序时,将生成以下输出
[one, two, three, four]
使用迭代器
fun main() { val theSet = setOf("one", "two", "three", "four") val itr = theSet.asIterable().iterator() while (itr.hasNext()) { println(itr.next()) } }
运行上述 Kotlin 程序时,将生成以下输出
one two three four
使用 for 循环
fun main() { val theSet = setOf("one", "two", "three", "four") for (i in theSet.indices) { println(theSet.elementAt(i)) } }
运行上述 Kotlin 程序时,将生成以下输出
one two three four
使用 forEach
fun main() { val theSet = setOf("one", "two", "three", "four") theSet.forEach { println(it) } }
运行上述 Kotlin 程序时,将生成以下输出
one two three four
注意 - 此处 it 的作用类似于 Java 中的 this 运算符。
Kotlin 集合的大小
我们可以使用 size 属性来获取集合中元素的总数
fun main() { val theSet = setOf("one", "two", null, "four", "five") println("Size of the Set " + theSet.size) }
运行上述 Kotlin 程序时,将生成以下输出
Size of the Set 5
“in”运算符
in 运算符可用于检查集合中是否存在元素。
示例
fun main() { val theSet = setOf("one", "two", "three", "four") if("two" in theSet){ println(true) }else{ println(false) } }
运行上述 Kotlin 程序时,将生成以下输出
true
contain() 方法
contain() 方法也可用于检查集合中是否存在元素。
示例
fun main() { val theSet = setOf("one", "two", "three", "four") if(theSet.contains("two")){ println(true) }else{ println(false) } }
运行上述 Kotlin 程序时,将生成以下输出
true
isEmpty() 方法
如果集合为空(不包含任何元素),则 isEmpty() 方法返回 true,否则返回 false。
示例
fun main() { val theSet = setOf("one", "two", "three", "four") if(theSet.isEmpty()){ println(true) }else{ println(false) } }
运行上述 Kotlin 程序时,将生成以下输出
false
indexOf() 方法
indexOf() 方法返回集合中指定元素第一次出现的索引,如果集合中不包含指定元素,则返回 -1。
示例
fun main() { val theSet = setOf("one", "two", "three", "four") println("Index of 'two' - " + theSet.indexOf("two")) }
运行上述 Kotlin 程序时,将生成以下输出
Index of 'two' - 1
elementAt() 方法
elementAt() 方法可用于获取集合中指定索引处的元素。
示例
fun main() { val theSet = setOf("one", "two", "three", "four") println("Element at 3rd position " + theSet.elementAt(2)) }
运行上述 Kotlin 程序时,将生成以下输出
Element at 3rd position three
集合添加
我们可以使用 + 运算符将两个或多个集合添加到单个集合中。这会将第二个集合添加到第一个集合中,并丢弃重复的元素。
示例
fun main() { val firstSet = setOf("one", "two", "three") val secondSet = setOf("one", "four", "five", "six") val resultSet = firstSet + secondSet println(resultSet) }
运行上述 Kotlin 程序时,将生成以下输出
[one, two, three, four, five, six]
集合减法
我们可以使用 - 运算符从另一个集合中减去一个集合。此操作将从第一个集合中删除公共元素,并返回结果。
示例
fun main() { val firstSet = setOf("one", "two", "three") val secondSet = setOf("one", "five", "six") val resultSet = firstSet - secondSet println(resultSet) }
运行上述 Kotlin 程序时,将生成以下输出
[two, three]
移除集合中的 null
我们可以使用 filterNotNull() 方法从集合中移除 null 元素。
fun main() { val theSet = setOf("one", "two", null, "four", "five") val resultSet = theSet.filterNotNull() println(resultSet) }
运行上述 Kotlin 程序时,将生成以下输出
[one, two, four, five]
排序元素
我们可以使用 sorted() 方法按升序排序元素,或使用 sortedDescending() 方法按降序排序集合元素。
fun main() { val theSet = setOf(10, 20, 30, 31, 40, 50, -1, 0) var resultSet = theSet.sorted() println(resultSet) resultSet = theSet.sortedDescending() println(resultSet) }
运行上述 Kotlin 程序时,将生成以下输出
[-1, 0, 10, 20, 30, 31, 40, 50] [50, 40, 31, 30, 20, 10, 0, -1]
过滤元素
我们可以使用 filter() 方法过滤掉与给定谓词匹配的元素。
fun main() { val theSet = setOf(10, 20, 30, 31, 40, 50, -1, 0) val resultSet = theSet.filter{ it > 30} println(resultSet) }
运行上述 Kotlin 程序时,将生成以下输出
[31, 40, 50]
删除前 N 个元素
我们可以使用 drop() 方法删除集合中的前 N 个元素。
fun main() { val theSet = setOf(10, 20, 30, 31, 40, 50, -1, 0) val resultSet = theSet.drop(3) println(resultSet) }
运行上述 Kotlin 程序时,将生成以下输出
[31, 40, 50, -1, 0]
分组集合元素
我们可以使用 groupBy() 方法对与给定谓词匹配的元素进行分组。
fun main() { val theSet = setOf(10, 12, 30, 31, 40, 9, -3, 0) val resultSet = theSet.groupBy{ it % 3} println(resultSet) }
运行上述 Kotlin 程序时,将生成以下输出
{1=[10, 31, 40], 0=[12, 30, 9, -3, 0]}
映射集合元素
我们可以使用 map() 方法使用提供的函数映射所有元素。
fun main() { val theSet = setOf(10, 12, 30, 31, 40, 9, -3, 0) val resultSet = theSet.map{ it / 3 } println(resultSet) }
运行上述 Kotlin 程序时,将生成以下输出
[3, 4, 10, 10, 13, 3, -1, 0]
集合元素分块
我们可以使用 chunked() 方法从集合中创建给定大小的块。根据集合中元素的总数,最后一个块的元素数量可能不等于块大小。
fun main() { val theSet = setOf(10, 12, 30, 31, 40, 9, -3, 0) val resultSet = theSet.chunked(3) println(resultSet) }
运行上述 Kotlin 程序时,将生成以下输出
[[10, 12, 30], [31, 40, 9], [-3, 0]]
集合元素窗口化
我们可以使用 windowed() 方法通过在元素集合上移动给定大小的滑动窗口来创建元素范围集合。
fun main() { val theSet = setOf(10, 12, 30, 31, 40, 9, -3, 0) val resultSet = theSet.windowed(3) println(resultSet) }
运行上述 Kotlin 程序时,将生成以下输出
[[10, 12, 30], [12, 30, 31], [30, 31, 40], [31, 40, 9], [40, 9, -3], [9, -3, 0]]
默认情况下,滑动窗口每次移动一步,但我们可以通过传递自定义步长值来更改它。
fun main() { val theSet = setOf(10, 12, 30, 31, 40, 9, -3, 0) val resultSet = theSet.windowed(3, 3) println(resultSet) }
运行上述 Kotlin 程序时,将生成以下输出
[[10, 12, 30], [31, 40, 9]]
Kotlin 可变集合
我们可以使用 mutableSetOf() 创建可变集合,之后我们可以使用 add() 向同一个集合中添加更多元素,并可以使用 remove() 方法从集合中删除元素。
fun main() { val theSet = mutableSetOf(10, 20, 30) theSet.add(40) theSet.add(50) println(theSet) theSet.remove(10) theSet.remove(30) println(theSet) }
运行上述 Kotlin 程序时,将生成以下输出
[10, 20, 30, 40, 50] [20, 40, 50]
测验时间 (面试和考试准备)
答案:A
解释
是的,我们可以添加或减去两个 Kotlin 集合并生成第三个集合。加号的作用类似于集合的 union()。
答案:B
解释
elementAt() 方法用于从给定索引获取列表元素。