<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
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]) //角標越界不會丟擲異常,而是返回一個null println(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 -= 5 mutableList.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 += 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.陣列型別
//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集合的建立
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使用介紹詳解的文章就介紹到這了,更多相關Kotlin List Set Map內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45