Kotlin集合List Set Map使用介紹詳解
1.在Kotlin中可以通過以下方式創(chuàng)建ArrayList、LinkedList、HashSet、HashMap等。
val arrayList = ArrayList<String>()
val linkedList = LinkedList<String>()
val hashSet = HashSet<String>()
val hashMap = HashMap<String,Int>()2.除了上面的方式,Kotlin還提供了其他創(chuàng)建集合的方法。
1)創(chuàng)建不可變集合。
之所以是不可變的,是因為Kotlin針對這種方式創(chuàng)建的集合,不提供set,remove,add的方法。只提供了get方法。
val list = listOf<Int>(1, 2, 3) val set = setOf<Int>(1, 2, 3) val map = mapOf(1 to "Jack", 2 to "Rose")
2)創(chuàng)建可以變集合。通過mutable創(chuàng)建的集合就是可變集合,可以對集合進行add set remove操作。
val mutableList = mutableListOf<Int>(1, 2, 3) val mutableSet = mutableSetOf<Int>(1, 2, 3) val mutableMap = mutableMapOf(1 to "Jack", 2 to "Rose")
3.對List的操作。
val list = listOf<Int>(1, 2, 3)
//通常get的方式
println(list.get(1))
//之所以能使用[]類似數(shù)組的方式獲取,是因為做了[]運算符重載,后面會講到。
println(list[1])
//角標越界不會拋出異常,而是返回一個null
println(list.getOrNull(3))
//通過?:空合并操作符,?:左邊的值為空,則返回右邊的值
println(list.getOrNull(3) ?: -1)
//如果角標越界,不會拋出異常。而是返回{}lambda表達式中的值
println(list.getOrElse(3) { -1 })1)通常通過get(index)來獲?。?/p>
list.get(1)
2)也可以通過[index],像操作數(shù)組那樣獲取。之所以可以用[]來獲取,是因為做了運算符重載。
list[1]
3)getOrNull,如果發(fā)生角標越界,不會拋出異常而是返回null??梢院??:空合并操作符結合起來使用,返回一個默認值。?:左邊的值為空,則返回右邊的值
list.getOrNull(3)
list.getOrNull(3) ?: -1
4)getOrElse接收兩個參數(shù),第一個索引值,第二個lambda表達式。如果角標越界,不會拋出異常,而是返回lambda表達式中的值。
list.getOrElse(3) { -1 }
5)可變集合:
val mutableList = mutableListOf<Int>(1, 2, 3)
set操作
mutableList.set(1,2) mutableList[1] = 2
add操作
mutableList.add(4) mutableList += 5
remove操作 :-=運算符重載,刪除的是元素的值
mutableList -= 5
mutableList.remove(5)
removeIf 接收一個lambda表達式,可以根據(jù)表達式中的條件進行刪除。
mutableList.removeIf { it == 4 }
mutableList.removeIf { it.contains("H")}
6)List集合的遍歷
可以用in遍歷。
forEach 接收一個lambda表達式,會把集合中的元素傳進來。
forEachIndexed接收一個lambda表達式,有兩個參數(shù),一個是index另外一個是對應的value
for (item in list) {
println(item)
}
list.forEach {
println(it)
}
list.forEachIndexed { index, value ->
println("$index , $value")
}4.list集合的解構:
可以通過_過濾掉不想要的元素。
val (first:Int,second:Int,third:Int) = listOf<Int>(1, 2, 3)
val (first: Int, _, third: Int) = listOf<Int>(1, 2, 3)
println("$first $third")
5.set集合
1)set的獲取方式和list類似
val set = setOf<Int>(1, 2, 3)
set.elementAt(1)
set.elementAtOrElse(1) { -1 }
set.elementAtOrNull(1)2)可變set集合
val mutableSet = mutableSetOf<Int>(1, 2, 3)
mutableSet += 4
mutableSet -= 2
mutableSet.remove(3)
mutableSet.removeIf { it==4 }3)list和set相互轉換
list轉為set,可以去除重復元素。set中是不允許重復的。
val list = mutableSet.toList(); val set = mutableList.toSet();
6.數(shù)組類型
//ByteArray
val byteArray = byteArrayOf(1,2,3)
//IntArray
val array = intArrayOf(1, 2, 3)
//CharArray
val charArray = charArrayOf('a','b','c')7.map集合
1)map集合的創(chuàng)建
Pari對象,存放的就是key value
val map = mapOf(Pair(1, "HanMei"), Pair(2, "LiLei"))
to看起來像一個關鍵子,其實to是一個函數(shù)。這種寫法,后面會講到。
val map = mapOf(1 to "HanMei", 2 to "LiLei")
創(chuàng)建可變map
val mutableMap = mutableMapOf(1 to "HanMei", 2 to "LiLei")
2)map的get操作
println(map[1])
println(map.getValue(1))
println(map.getOrDefault(1, "Default"))
println(map.getOrElse(1) { "default" })3)map的遍歷
map.forEach {
println("%$it.key , ${it.value}")
}
map.forEach { (key, value) -> println("$key ,$value") }4)可變map的增刪改
val mutableMap = mutableMapOf(1 to "HanMei", 2 to "LiLei")
mutableMap += 3 to "XiaoHua"
mutableMap.put(4, "XiaoHua")
mutableMap.getOrPut(5) { "XiaoHua" }
val getValue:()->String = {
"value"
}
mutableMap.getOrPut(5) {getValue()}到此這篇關于Kotlin集合List Set Map使用介紹詳解的文章就介紹到這了,更多相關Kotlin List Set Map內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Android Popupwindow彈出窗口的簡單使用方法
這篇文章主要為大家詳細介紹了Android Popupwindow彈出窗口的簡單使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
Android Studio 如何刪除/新建一個module(圖文教程詳解)
這篇文章主要介紹了Android Studio 如何刪除/新建一個module,此方法也會將該module從你的硬盤中刪除,如果直接右鍵會發(fā)現(xiàn)沒有delete選項,本文通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友參考下吧2020-03-03
Android MessageQueue消息隊列主要作用詳解
Android 消息機制主要指的是 Handler 的運行機制及其所依賴的 MessageQueue 和 Looper 的工作過程,Handler、MessageQueue、Looper組成一個相互聯(lián)系的整體。本文先從 MessageQueue 的源碼來說明其實現(xiàn)原理2023-02-02
Android中關于CoordinatorLayout的一些實用布局技巧
大家都知道CoordinatorLayout是一個“加強版”的 FrameLayout,那么下面這篇文章主要給大家分享了Android中關于CoordinatorLayout的一些布局技巧,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。2017-06-06

