}
println()
// 3、forEachIndexed 获取下标和元素的遍历
list2.forEachIndexed { index, item ->
print(“下标是: i n d e x , 元素是: index, 元素是: index,元素是:item”)
}
val list2 = mutableListOf(“张三”, “大漂亮”, “王美丽”, “王五”)
// 集合配合结构语法
val (v1, v2, v3) = list2
println(v1)
println(v2)
println(v3)
// val 是只读的数据遍历,可以使用var 修改结构出来的数据
var (v11, v22, v33) = list2
v22 = “tiger”
println(v1)
// 也可以使用 _ 符号,来屏蔽你不需要的接收值,算是数据优化,可以优化内存
val (_, v222, v333) = list2
println(v222)
println(v333)
set 集合,元素不能重复
// set 集合,元素不能重复
val set = setOf(“张三”, “大漂亮”, “王美丽”, “王五”, “大漂亮”)
// set 集合普通的取值方式
// set[0] 在set 中,没有[] 这样的功能, 取set 的集合值
set.elementAt(0)
// set.elementAt(5) 这里会越界崩溃
// set 集合 和list 集合一样,给我们提供了一种有效的取值方式,可以避免下标越界等情况的出现
set.elementAtOrElse(0){“不越界,我就不会出来”}
set.elementAtOrElse(6){“越界了哦,我出来啦”}
set.elementAtOrNull(0)
set.elementAtOrNull(6) ?: “越界啦,你返回了null,空合并操作符,让我出来和你见面”
// list 中,有可变的集合,set 当然也会有啦。包括集合转变什么的,参照list 就可以
val set = mutableSetOf(“张三”, “大漂亮”, “王美丽”, “王五”, “大漂亮”)
set.add(“tiger”)
set.remove(“王五”)
set.removeIf{
it.contains(“王”)
}
println(set)
val list = mutableListOf(“张三”, “大漂亮”, “王美丽”, “王五”, “大漂亮”)
// list 转set 去重
println(list.toSet())
// list 转set 去重,再转回list
println(list.toSet().toList())
// 使用快捷去重函数 distinct
println(list.distinct()) // 其实就是内部封装了一下,先把List 转换成 可变长度的set 再转换成list ,和上面的操作是一样的
在kotlin 语言中,各种数组类型,虽然使用的是引用类型,背后可以编译成Java 基本类型
IntArray intArrayOf
DoubleArray doubleArrayOf
LongArray longArrayOf
ShortArray shortArrayOf
ByteArray byteArrayOf
FloatArray floatArrayOf
BooleanArray booleanArrayOf
Array<对象类型> arrayOf 对象数组
val intArray = intArrayOf(1, 23, 32, 5, 2, 3)
// 其实数组和之前说的集合都是一样的,简单的,不再赘述
intArray[3]
// intArray[7] 下标越界,
intArray.elementAtOrElse(3) { -1 }
intArray.elementAtOrNull(66) ?: -1
// list 集合转数组
val set = intArray.toSet()
println(set)
// Array<对象数组>
val array = arrayOf(File(“文件路径”), File(“文件路径”), File(“文件路径”))
println(array)
// 在kotlin 中,下面两种创建map 的方式,其实是等价的
val map = mapOf(“tiger” to “111”, “ss” to “333”)
val map1 = mapOf(Pair(“tiger”, “111”), Pair(“tiger2”, “”))
val map = mapOf(“tiger” to 122, “tiger2” to 333)
// 方法一 找不到会返回一个null
println(map[“tiger”])
println(map[“tiger333”]) // 返回null
// 方法二 和数组集合是一样的
println(map.getOrElse(“tiger”) {-1})
println(map.getOrElse(“tiger222”) {-1}) //找不到会返回-1
// 方法三 getOrDefault
println(map.getOrDefault(“tiger”, -1))
println(map.getOrDefault(“tiger4444”, -1)) //找不到会返回-1
// 方法四 getValue
println(map.getValue(“tiger”))
println(map.getValue(“tiger666”)) //找不到会直接崩溃
val map = mapOf(Pair(“tiger”, 12), Pair(“tiger2”, 34), Pair(“tiger3”, 44), Pair(“tiger4”, 66))
// 第一种
for (i in map){
println(i)
println(i.key)
println(i.value)
}
// 第二种
map.forEach{
// 这个it 包含了 key value
println(it)
println(it.key)
println(it.value)
}
val map = mutableMapOf(Pair(“tiger”, 12), Pair(“tiger2”, 34), Pair(“tiger3”, 44), Pair(“tiger4”, 66))
// 其实就和集合数组一样的操作
// 可变集合的操作 -= += [] put
map += “tiger222” to 322
map -= “tiger222”
map[“dddd”] = 3000
map.put(“ssss”, 333)
println(map)
// getOrPut 没有传入的 tiger555 key的话,他会把这个数据,插入进整个集合
println(map.getOrPut(“tiger555”) { 7777 })
尾声
在我的博客上很多朋友都在给我留言,需要一些系统的面试高频题目。之前说过我的复习范围无非是个人技术博客还有整理的笔记,考虑到笔记是手写版不利于保存,所以打算重新整理并放到网上,时间原因这里先列出面试问题,题解详见:
展示学习笔记
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
放到网上,时间原因这里先列出面试问题,题解详见:
[外链图片转存中…(img-tUV30KIX-1714277879760)]
展示学习笔记
[外链图片转存中…(img-VnlzyFN0-1714277879760)]
[外链图片转存中…(img-4IpvZ9RC-1714277879761)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!