一、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<File>
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<String,Double> = mapOf<String,Double>("lisi" to(52.34),"wangwu" to 66.6)
val mMap2 = mapOF(Pair("Derr",23.3))
//上面两种方式都是等价的
}
三、Kotlin语言的读取Map的值
fun main() {
val mMap : Map<String,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<String,Int> = mapOf(Pair("DE",12),Pair("KE",11))
//第一种方式
map.forEach {
// it内容 == 每一个元素 K和 V
// it类型 == Map.Entry<String,Int>
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
}