網站首頁 編程語言 正文
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()}
原文鏈接:https://blog.csdn.net/niuyongzhi/article/details/126571244
相關推薦
- 2022-08-26 Python批量將csv文件編碼方式轉換為UTF-8的實戰記錄_python
- 2022-05-25 python教程之利用pyautogui圖形自動化擊敗重復性辦公任務_python
- 2022-08-23 Python利用VideoCapture讀取視頻或攝像頭并進行保存_python
- 2022-12-23 Android開發之線程通信詳解_Android
- 2022-07-31 Jenkins定時構建語法規則及時間設置_相關技巧
- 2022-04-07 Android中絕對音量和相對音量設置_Android
- 2022-05-23 python中的netCDF4批量處理NC文件的操作方法_python
- 2022-04-25 Entity?Framework?Core批處理SQL語句_實用技巧
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支