日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kotlin(八)集合List Set Map

發布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kotlin(八)集合List Set Map 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.在Kotlin中可以通過以下方式創建ArrayList、LinkedList、HashSet、HashMap等。

val arrayList = ArrayList<String>()val linkedList = LinkedList<String>()val hashSet = HashSet<String>()val hashMap = HashMap<String,Int>()

2.除了上面的方式,Kotlin還提供了其他創建集合的方法。

?1)創建不可變集合。

? ? ? 之所以是不可變的,是因為Kotlin針對這種方式創建的集合,不提供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)創建可以變集合。通過mutable創建的集合就是可變集合,可以對集合進行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))//之所以能使用[]類似數組的方式獲取,是因為做了[]運算符重載,后面會講到。println(list[1])//角標越界不會拋出異常,而是返回一個nullprintln(list.getOrNull(3))//通過?:空合并操作符,?:左邊的值為空,則返回右邊的值println(list.getOrNull(3) ?: -1)//如果角標越界,不會拋出異常。而是返回{}lambda表達式中的值println(list.getOrElse(3) { -1 })

?1)通常通過get(index)來獲取:

list.get(1)

2)也可以通過[index],像操作數組那樣獲取。之所以可以用[]來獲取,是因為做了運算符重載。

list[1]

3)getOrNull,如果發生角標越界,不會拋出異常而是返回null。可以和?:空合并操作符結合起來使用,返回一個默認值。?:左邊的值為空,則返回右邊的值

list.getOrNull(3) list.getOrNull(3) ?: -1

4)getOrElse接收兩個參數,第一個索引值,第二個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 -= 5mutableList.remove(5)

?removeIf 接收一個lambda表達式,可以根據表達式中的條件進行刪除。

mutableList.removeIf { it == 4 } mutableList.removeIf { it.contains("H")}

?6)List集合的遍歷

? ? ?可以用in遍歷。

? ? forEach 接收一個lambda表達式,會把集合中的元素傳進來。

? ?forEachIndexed接收一個lambda表達式,有兩個參數,一個是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 += 4mutableSet -= 2mutableSet.remove(3)mutableSet.removeIf { it==4 }

3)list和set相互轉換

? ? ?list轉為set,可以去除重復元素。set中是不允許重復的。

val list = mutableSet.toList();val set = mutableList.toSet();

? ?6.數組類型

//ByteArrayval byteArray = byteArrayOf(1,2,3)//IntArrayval array = intArrayOf(1, 2, 3)//CharArrayval charArray = charArrayOf('a','b','c')

7.map集合

1)map集合的創建

? Pari對象,存放的就是key value

val map = mapOf(Pair(1, "HanMei"), Pair(2, "LiLei"))

?to看起來像一個關鍵子,其實to是一個函數。這種寫法,后面會講到。

val map = mapOf(1 to "HanMei", 2 to "LiLei")

?創建可變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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。