一、Kotlin中的数组类型
Kotlin语言中的各种数组类型,虽然是引用类型,背后可以编译成Java基本数据类型
IntArray intArrayOf
DoubleArray doubleArrayOfLongArray longArrayOf
ShortArray shortArrayOf
ByteArray byteArrayOf
FloatArray floatArrayOf
BooleanArray booleanArrayOf
Array arrayOf //对象数组
- //1.intArrayOf 常规操作的越界崩溃
- //elementAtOrElse elementAtOrNull
- //List集合转数组
- //arrayOf Array
- fun main() {
- //1.intArrayOf 常规操作的越界崩溃
- val intArray : IntArray = intArrayOf(1,2,3)
- println(intArray[0]) //这个越界了会崩溃
-
- //越界崩溃解决办法
- println(intArray.elementAtOrElse(100) {-1}) //由于是数组,int类型,因此越界返回也为int
- println(intArray.elementOrNull(100) ?= "你越界啦")
-
- //List集合转数组
- val charArray : CharArray = listOf('A','B','C').toCharArray()
- println(CharArray)
-
- //arrayOf :是一个对象类型,返回一个对象舒服
- val objArray : Array = arrayOf(File("AAA"),File("BBB"),File("CCC"))
- }
二、Kotlin语言的Map创建
- fun main() {
- val mMap1 : Map
Double> = mapOfDouble>("lisi" to(52.34),"wangwu" to 66.6) - val mMap2 = mapOF(Pair("Derr",23.3))
- //上面两种方式都是等价的
- }
三、Kotlin语言的读取Map的值
- fun main() {
- val mMap : Map
Int> = mapOf("De" to 123,"Ke" to 11) -
- //方式一
- println(mMap["De"]) //被后续对[] 运算符冲在了
- println(mMap["ke"])
-
- //map通过key找,找不到会返回null
- println(mMap["1"]) //null
-
- //方式二 getOrDefault
- println(mMap.getOrDefault("De",-1))
- println(mMap.getOrDefault("Deee",-1)) //-1
-
- //方式三 getOrElse
- println(mMap.getOrElse("DEEE") {-1}) //-1
-
- //方式四 getValue 与Java一样,会崩溃,尽量不要使用这个方式
- println(mMap.getValue("DEEEE")) //.get函数和[] 是等价的
- }
四、Kotlin语言的遍历Map学习
- fun main() {
- val map: Map
Int> = mapOf(Pair("DE",12),Pair("KE",11)) -
- //第一种方式
- map.forEach {
- // it内容 == 每一个元素 K和 V
- // it类型 == Map.Entry
- println("${it.key},${it.value}")
- }
-
- println()
-
- //第二种方式
- map.forEach { kk,vv -> //把默认的it给覆盖了
- println("$kk,$vv")
- }
-
- //第三种方式
- map.forEach { (k,v) ->
- println("$k,$v")
- }
-
- //第四种方式
- for (item in map) {
- //item内容 每一个元素k和v
- println("key:${item.key},value:${item.value}")
- }
- }
五、Kotlin语言的可变Map集合学习
- //1.可变集合的操作 += [] put
- //2.getOrPut 没有的情况
- //3.getOrPut 有的情况
- fun main() {
- //1.可变集合的操作 += [] put
- val map = mapOf(Pair("DE",11),"KE" to 12) //不可变
- val map = mutableMapOf(Pair("DE",11),"KE" to 12) //可变
-
- map += "AAA" to(111)
- map -= "AAA"
- map["CCC"] = 888
- map.put("DDD",113) //put和[] 等价
-
- //2.getOrPut没有的情况
- //如果整个map集合里面没有FFF的key元素,我就帮你先添加到map集合中去,然后再从map集合中获取
- val r = map.getOrPut("FFF") {555}
- println(r) //555
- println(map["FFF"]) //他已经帮你加入进去了,所以你可以获取
-
- //3.getOrPut 有的情况
- map.getOrPut("Derry") {666} //发现Derry有 就直接获取,没有就666
- println(r2) //666
- }