一. list
1.1.可變集合與不可變集合
//TODO:不可變集合 -- 沒有add,remove等方法
var list3 = listOf("iam")
println(list3.get(0))
println(list3[0])
println(list3.getOrNull(1)?:"越界了")
println(list3.getOrElse(1,{"越界了"}))
//TODO:可變集合 -- 有add,remove等方法
var list1 = mutableListOf("is your")
list1.remove("is your")
println(list1.getOrNull(0))
//TODO:不可變集合to可變集合
var list2 = list3.toMutableList()
println(list2[0])
//TODO:可變集合to不可變集合
var list4 = list1.toList()
list1.removeIf { true } //TODO:刪掉符合條件的元素(此處相當于全部刪了)
println(list1)
運行結果:

1.2三種遍歷手段
/**
* 遍歷三種寫法
* @author Allen
*/
val list = listOf(1,2,3)
for( i in list){
print("$i ")
}
println()
list.forEach {
print("$it ")
}
println()
list.forEachIndexed{index: Int, i: Int ->
print("下標為$index 元素是$i " )
}
println()

二. 解構寫法
/**
* 解構寫法
*/
var(num1,num2,num3) = list;
println("num1 = $num1; num2 = $num2; num3 = $num3")
num1 = 4; //可變
println("num1 = $num1; num2 = $num2; num3 = $num3")
val(n1,n2,n3) = list
//只讀, n1 = 4會報錯
var(_,a2,a3) = list //_表示不接收,可以優化性能
println("num2 = $a2; num3 = $n3")
通過反編譯可以看出,_表示不接受資料,反編譯沒有給予變數
三.Set
與list有可變和不可變
/**
* set集合 沒有set[0]的寫法, 存放無序不重復的元素
*/
var set = setOf(1,2,3) //TODO:不可變
val set1 = mutableSetOf(1,2,3) //TODO:可變
set1.add(4)
println(set.elementAt(0))
println(set1.elementAtOrNull(1))
println(set1.elementAtOrElse(1,{"越接了"}))
set1 += 5;
set1 += 4
println(set1.elementAt(4))
四. list 與 set 互轉達到去重效果


五. 陣列型別
1.1

注意:arrayof<>()存放的是Array<物件型別>,是類物件型別


1.2 集合轉陣列

1.3 arrayof<>()


六. Map
1.1獲取并初始化map物件的倆種方式
val map1 = mapOf<String,String>("小鄭" to("二十"),"Allen" to("二十一"))
val map2 : Map<String,Int> = mapOf(Pair("小鄭",20), Pair("Allen",21))
1.2獲取值的五種方式
//獲取值方式第一種([]符多載,其實跟get()一樣)
//無資料回傳null,不會奔潰
println(map1["小鄭"])
println(map1["佚名"])
//獲取值方式第二種
//無資料回傳null,不會奔潰
println(map1.get("小鄭"))
println(map1.get("佚名"))
//獲取值方式第三種,defaulValue引數不是lambda
//無資料回傳defaultValue
println(map1.getOrDefault("小鄭","沒有相關資料"))
println(map1.getOrDefault("佚名","沒有相關資料"))
//獲取值方式第四種,defaultValue引數是lambda(lambda作為最后一個引數可以放在括號外)
//無資料回傳defaultValue
println(map1.getOrElse("小鄭"){"沒有相關資料"})
println(map1.getOrElse("Allen",{"沒有相關資料"}))
println(map1.getOrElse("佚名"){"沒有相關資料"})
//獲取值方式第五種,無資料會奔潰
println(map1.getValue("小鄭"))
println(map1.getValue("佚名"))

1.3 map從可變到不可變:
var map3 = map1.toMutableMap()
map3.put("曉堅","二十一")
map3.remove("Allen")
map3.replace("小鄭","二十","二十三")
println(map3)


1.4map的四種遍歷
//第一種
map3.forEach {
print("${it.key}=${it.value} ")
}
println()
//第二種
map3.forEach{ Key,Value ->
print("$Key=$Value ")
} //key和value應該是配對的,所以這里會花波浪線表示這么做沒有錯,但是不太好
println()
//第三種
map3.forEach { (K,V) ->
print("$K=$V ")
}
println()
//第四種
for(item in map3){
print("$item ")
}

其中第四種相當于
//第四種
for(item : Map.Entry<String,String> in map3){
print("$item ")
}
但由于默認會推導并增加:Map.Entry<String,String>,所以可以不寫
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/413483.html
標籤:其他
下一篇:Launcher圖示角標
