本篇主要講述Kotlin集合,主要包括List平窘、Set吓肋、Array、Map四類初婆。
一蓬坡、List篇
1.1 固定長度的List
定義方式:使用listOf
定義固定長度的list集合。
如:
val list = listOf("Sam", "Jack", "Chork", "Yam")
println(list[2])
取值方式:
- 索引磅叛、elementAt屑咳,這兩種方式越界會拋異常;
- getOrElse弊琴、elementAtOrElse兆龙、getOrNull、elementAtOrNull敲董,這幾種屬于安全取值紫皇,查找不到有輔助處理;
//該方式獲取時腋寨,若索引越界會拋異常
println(list[4])
println(list.elementAt(1))
//該方式獲取指定的索引的值聪铺,若越界會返回指定的默認(rèn)字符串
println(list.getOrElse(4){"UnKnown"})
println(list.getOrElse(2){"UnKnown"})
//同上方法
println(list.elementAtOrElse(4){"UnKnown"})
//該方式獲取指定索引的值時,若越界則會返回null
println(list.getOrNull(4))
//同上方法萄窜,內(nèi)部調(diào)用了getOrNull方法
println(list.elementAtOrNull(4))
元素去重方式:
//********* 元素去重
list.distinct() //等價于 list.toSet().toList()
轉(zhuǎn)可變長度的List集合
//********* 轉(zhuǎn)可變集合
val toMutableList = list.toMutableList()
轉(zhuǎn)數(shù)組方式:會根據(jù)數(shù)據(jù)類型調(diào)用對應(yīng)的轉(zhuǎn)換函數(shù)
//這里list是對象類型的故要用toTypedArray
val toTypedArray = list.toTypedArray()
//整數(shù)List
listOf(10,20).toIntArray()
1.2 可變長度的List
定義方式:使用mutableListOf
val mutableList = mutableListOf("Sam", "Jack", "Chork", "Yam")
取值方式:與固定長度的List取值方式一樣铃剔。
添加元素:通過"+="、add函數(shù)
//**************添加元素
mutableList += "Hab" //mutator函數(shù)
mutableList.add("Hab2")
mutableList.add(1,"Hab3")
println(mutableList)
刪除元素:通過“-=”查刻、remove键兜、removeAt、removeIf(刪除滿足條件的元素)
//**************刪除元素
mutableList -= "Sam"
//按索引移除元素
mutableList.removeAt(0)
mutableList.remove("Hab2")
//移除符合條件的數(shù)據(jù)
mutableList.removeIf{it.contains("k")}
mutableList.removeFirst()
mutableList.removeFirstOrNull()
mutableList.removeLast()
mutableList.removeLastOrNull()
println(mutableList)
轉(zhuǎn)不可變長度的List集合
//**************轉(zhuǎn)不可變的List
val toList = mutableList.toList()
轉(zhuǎn)Set集合
//**************轉(zhuǎn)Set
val toSet = mutableList.toSet()
1.3 List遍歷
直接上示例
fun main() {
val list = listOf("Sam", "Jack", "Chork")
//*********** 遍歷方式一 ***************
for (s in list){
println(s)
}
//*********** 遍歷方式二 ***************
list.forEach {
println(it)
}
//*********** 遍歷方式三 帶索引 ***************
list.forEachIndexed { index, s ->
println("${index},${s}")
}
//*********** 遍歷方式四 帶索引 ***************
list.withIndex().forEach {
println("${it.index},${it.value}")
}
//*********** 遍歷方式五 解構(gòu) ***************
val (first,second,third) = list
println("$first $second $third")
//若不想取某個元素的值穗泵,則可以通過下劃線“_”
val (origin,_,last) = list
println("$origin $last")
}
二普气、Set篇
2.1 不可變長度的Set集合
定義方式:setOf
val set = setOf("Sam", "Jack", "Chork", "Sam")
取值方式:與List類似,但是set集合無法通過索引的方式直接取值(set[0])
println(set.elementAt(1))
//安全取值方式
println(set.elementAtOrElse(1){"UnKnown"})
println(set.elementAtOrNull(1))
轉(zhuǎn)可變長度的set集合
//轉(zhuǎn)可變長度的Set集合
val toMutableSet = set.toMutableSet()
2.2 可變長度的Set集合
定義方式:mutableSetOf
val mutableSet = mutableSetOf("Sam", "Jack", "Chork", "Yam")
添加元素
//********* 添加元素
mutableSet += "Yam"
mutableSet.add("Hob")
println(mutableSet)
刪除元素
//********* 刪除元素
mutableSet -= "Sam"
//刪除符合條件的元素
mutableSet.removeIf{it.contains("k")}
println(mutableSet)
轉(zhuǎn)不可變長度的Set集合
//********* 轉(zhuǎn)不可變Set集合
val toSet = mutableSet.toSet()
2.3 Set集合遍歷
同List遍歷
三佃延、Array篇
Kotlin提供了各種類型的Array
數(shù)組類型 | 創(chuàng)建數(shù)組函數(shù) |
---|---|
IntArray | intArrayOf |
DoubleArray | doubleArrayOf |
LongArray | longArrayOf |
ShortArray | shortArrayOf |
ByteArray | byteArrayOf |
FloatArray | floatArrayOf |
BooleanArray | booleanArrayOf |
Array | arrayOf |
示例:
fun main() {
//1.Int數(shù)組
val intArrayOf = intArrayOf(10, 20, 30)
//2.Double 數(shù)組
val doubleArrayOf = doubleArrayOf(2.3, 2.0, 1.5)
//3.Float 數(shù)組
val floatArrayOf = floatArrayOf(2.0f, 1.5f)
//4.Long 數(shù)組
val longArrayOf = longArrayOf(10L, 20L)
//5.Short 數(shù)組
val shortArrayOf = shortArrayOf(10, 20)
//6.Byte 數(shù)組
val byteArrayOf = byteArrayOf(1, 2, 3)
//7.Boolean 數(shù)組
val booleanArrayOf = booleanArrayOf(true, false)
//8.Object 數(shù)組
val arrayOf = arrayOf(User(), User())
}
//定義一個類
private class User
四现诀、Map篇
4.1 不可變長度的map
定義方式:mapOf
//to是通過中綴表達(dá)式定義的擴(kuò)展函數(shù)
val map = mapOf("Jack" to 10, "Sam" to 20, "Luck" to 18)
取值方式
//*********** 讀取Map的值
println(map["Jack"])
println(map.getValue("Sam"))
//安全取值函數(shù)
println(map.getOrElse("Sam"){"Unknown"})
println(map.getOrDefault("JJ",0))
4.2 可變長度的Map
定義方式:mutableMapOf
map中的鍵值對是Pair類型 ==> Pair<A, B>
val map = mutableMapOf("Jack" to 10, "Sam" to 20, "Luck" to 18)
向map中增加元素 : "+="、put履肃、getOrPut
//******** 添加元素
map += "Haha" to 16
map.put("Hob",18)
//獲取指定的key元素赶盔,若不存在則將該元素加入到map中
map.getOrPut("Choice"){17}
println(map)
從map中移除元素,通過"-="榆浓、remove
//******** 移除元素
map -= "Haha"
map.remove("Jack")
println(map)
map轉(zhuǎn)其他集合
//******** map轉(zhuǎn)List集合
val toList = map.toList()
println(toList)
4.3 map集合遍歷
通過forEach方式,有下面兩種方式
fun main() {
val map = mapOf("Jack" to 10, "Sam" to 20, "Luck" to 18)
//方式一
map.forEach {
println("${it.key}撕攒,${it.value}")
}
//方式二
map.forEach { (t, u) ->
println("${t} -- ${u}")
}
}
歡迎留言大家互相交流學(xué)習(xí)陡鹃!
示例源碼地址kotlin_demo