1.1 Set创建与元素获取
//TODO Kotlin语言中的Set创建与元素获取
/*1.Set 定义 不允许重复
*2。普通方式 elementAt 会越界
*3.elementAtOrElse elementAtOrNull
* */
fun main() {
val set = setOf<String>("张三","lisi","王五","lisi")
println(set)
println(set.elementAt(0))
println(set.elementAt(1))
println(set.elementAt(2))
// println(set.elementAt(3)) //超过集合下表会崩溃
println()
//使用list或者set集合 尽量使用此方式 防止越界崩溃
println(set.elementAtOrElse(100) { "越界了" })
println(set.elementAtOrNull(1000) ?: "越界了")
}
1.2 可变Set集合
//TODO Kotlin语言中的Set可变集合
/*
*
* */
fun main() {
val set= mutableSetOf(1,2,5,5,6,9)
set+=100
set-=1
set.add(22)
set.remove(9)
println(set)
}
1.3 集合转换与快捷函数
//TODO Kotlin语言中的集合转换和快捷函数
/*
*
* */
fun main() {
val list= mutableListOf(1,1,1,2,6,4,4,5)
println(list)
//List 转 Set 去重
val set = list.toSet()
println(set)
//快捷函数去重 distinct
println(list.distinct())
}
1.4 数组类型
//TODO Kotlin语言中的数组类型
/*
*
* Kotlin语言中的各种数组类型,虽然是引用类型,背后可以编译成Java基本数据类型
* IntArray intArrayOf
DoubleArray doubleArrayOf
LongArray longArrayOf
ShortArray shortArrayOf
ByteArray byteArrayOf
FloatArray floatArrayOf
BooleanArray booleanArrayOf
Array arrayOf 对象数组
* */
fun main() {
//1.intArrayOf 常规的操作取元素会崩溃
val intArray = intArrayOf(1,2,3,4,5)
for (i in intArray) {
print("元素:$i")
}
//println(intArray[10]) //越界会崩溃
println()
//2.List集合转 数组
val array = listOf('a','b','c').toCharArray()
println(array)
}
1.5 Map的创建与读取
//TODO Kotlin语言中的Map创建 读取Map值
/*
*
* */
fun main() {
val map1= mapOf("lisi" to 123,"wangwu" to 456)
val map2= mapOf(Pair("lisi" to 123,"lisi" to 456))
//方式一 []找不到会返回null
println(map1["lisi"])
println(map1["wangwu"])
println(map1.get("wangwu"))
println(map1["xxx"]) //map通过key找 如果找不到返回一个null
println()
//方式二 getOrDefault
println(map1.getOrDefault("lisi", -1))
println(map1.getOrDefault("xxx", -1))
//方式三 getOrElse
println(map1.getOrElse("lisi") {-1})
println(map1.getOrElse("xxx") { -1 })
}
1.6 Map的遍历
//TODO Kotlin语言中的Map集合遍历
/*
*
* */
fun main() {
val map = mapOf("zhangsan" to 1, "lisi" to 2, "wangwu" to 3, "maliiu" to 4)
//第一种方式:
map.forEach{
//it 内容 每一个元素(K 和 V) 每一个元素(K 和 V) 每一个元素(K 和 V)
//it 类型 Map.Entry<String,Int>
println("K: ${it.key} V:${it.value}")
}
println()
//第二种方式:
map.forEach { key,value->
println("K: $key V: $value")
}
println()
//第三种方式:
map.forEach { (key, value) ->
println("K: $key V: $value")
}
println()
//第四种方式:
for (item in map) {
println("key: ${item.key}, value: ${item.value}")
}
}
1.7 可变的Map集合
//TODO Kotlin语言中的可变Map
/*
1.可变集合的操作 += [] put
* 2.getOrPut 没有的情况
3.getOrPut 有的情况
* */
fun main() {
//1.可变集合的操作 += [] put
val map= mutableMapOf("zhangsan" to 123,"lisi" to 456,"wangwu" to 789)
map+="ss" to 111
map-="wangwu"
map["xxx"]=108
map.put("ddd",999) //put 和 []等效
println(map)
println()
//2.getOrPut 没有的情况
//如果整个map集合里面没有 FFF的key元素,我就帮你先添加到map集合当中去,然后再从map集合中获取
val result = map.getOrPut("FFF") { 555 }
println(map["FFF"])
//3.getOrPut 有的情况
//如果整个map集合里面有 zhangsan的key元素,直接将值取出来,相当于-1失效了
val r2=map.getOrPut("zhangsan"){-1}
println(r2)
}