集合是可变数量(可能为0)的一组条目,kotlin标准库提供一个整套用于集合管理的工具,各种集合对于解决问题都具有重要意义,并且经常用到。kotlin中的集合与Java基本类似
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内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:Kotlin集合List Set Map使用介绍详解
- Android实现监听音量的变化 2023-03-30
- 最好用的ios数据恢复软件:PhoneRescue for Mac 2023-09-14
- SurfaceView播放视频发送弹幕并实现滚动歌词 2023-01-02
- Android studio实现动态背景页面 2023-05-23
- Android实现轮询的三种方式 2023-02-17
- iOS 对当前webView进行截屏的方法 2023-03-01
- 详解flutter engine 那些没被释放的东西 2022-12-04
- Android MaterialButton使用实例详解(告别shape、selector) 2023-06-16
- 作为iOS开发,这道面试题你能答出来,说明你基础很OK! 2023-09-14
- Flutter实现底部和顶部导航栏 2022-08-31
