- 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() 方法用於從給定索引獲取列表元素。