List
聲明一個list并列印
var lists = listOf("化學","實體","數學")
for(list in lists){
println(list)
}

列印list下标和值
var lists = listOf("化學","實體","數學")
for((i,e) in lists.withIndex()){
println("$i $e")
}
用
listOf
函數建立的是一個不可變的集合,建立可變集合使用
mutableListOf
val list = mutableListOf("Apple","Banana","Orange")
list.add("Pear")
前邊介紹的是 List 集合的用法,實際上 Set 集合與此一模一樣隻是換成了
setOf()
和
mutableSetOf()
Map
Kotlin的Map集合用于儲存key-value對
var map = TreeMap<String,String>()
map["好"] = "good"
map["學習"] = "study"
map["天"] = "day"
map["向上"] = "up"
for ((key, value) in map) {
println("${key}->${value}")
}
從 Map 中讀取一條資料可以這樣寫
println(map["好"])
像 List 和 Set 一樣,Kotlin也提供了一對
mapOf()
和
mutableMapOf()
來簡化 Map 用法
val map = mapOf("好" to "good","學習" to "study","天" to "day","向上" to "up")
for((key,value) in map){
println("${key}->${value}")
}
集合的函數式API
找出長度最長的單詞
如果我們有一個水果集合,要找出單詞最長的那個你可以這樣寫
val list = listOf("Apple","Banana","Orange","Pear","Grape","Watermelon")
var maxLengthFruit = ""
for(fruit in list){
if(fruit.length > maxLengthFruit.length){
maxLengthFruit = fruit
}
}
println("max lenth fruit is "+maxLengthFruit)
運作結果
如果我們使用集合的函數式API,可以讓這個功能更簡單
val list = listOf("Apple","Banana","Orange","Pear","Grape","Watermelon")
var maxLengthFruit = list.maxBy { it.length }
println("max lenth fruit is "+maxLengthFruit)
現在看這段代碼你可能比較吃力,因為還沒有學 Lambda 表達式的文法結構。Lambda 就是一小段可以作為參數傳遞的代碼,通常不建議在 Lambda 表達式中編寫太長代碼,否則可能影響代碼可讀性。Lambda 表達式文法結構如下:
{參數名1:參數類型,參數名2:參數類型 -> 函數體}
首先最外層是一對大括号,如果有參數傳入到 Lambda 表達式中的話,我們還需要聲明參數清單,參數清單結尾用一個 -> 符号表示參數清單結束以及函數體開始。函數體中可以編寫任意行代碼(不建議編寫太長代碼),并且最後一行代碼會自動作為 Lambda 表達式的傳回值
map函數:單詞變成大寫
集合中的 map 函數是最常用的一種函數式 API,它用于将集合中的每個元素都映射成另外的
值,映射規則在 Lambda 表達式中指定,最終形成新的集合。例如,我們希望讓所有水果都變成大寫模式
val list = listOf("Apple","Banana","Orange","Pear","Grape","Watermelon")
val newlist = list.map { it.toUpperCase() }
for(fruit in newlist){
println(fruit)
}
filter 函數:保留5字以内的水果
filter 函數就是過濾集合中資料的,可以單獨使用,也可以配合 map 函數使用
val list = listOf("Apple","Banana","Orange","Pear","Grape","Watermelon")
val newlist = list.filter { it.length <=5 }
.map { it.toUpperCase() }
for(fruit in newlist){
println(fruit)
}
any 和 all
any 函數用于判斷集合中是否至少存在一個元素滿足指定條件
all 函數用于判斷集合中是否所有元素滿足指定條件
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
val anyResult = list.any { it.length <= 5 }
val allResult = list.all { it.length <= 5 }
println("anyResult is " + anyResult + ",allResult is " + allResult)