10天学会kotlin DAY4 数组、集合和 Map 的使用

}

println()

// 3、forEachIndexed 获取下标和元素的遍历

list2.forEachIndexed { index, item ->

print(“下标是: i n d e x , 元素是: index, 元素是: index,元素是:item”)

}

5、结构语法过滤


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)

6、set 集合


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,空合并操作符,让我出来和你见面”

7、可变的set 集合


// list 中,有可变的集合,set 当然也会有啦。包括集合转变什么的,参照list 就可以

val set = mutableSetOf(“张三”, “大漂亮”, “王美丽”, “王五”, “大漂亮”)

set.add(“tiger”)

set.remove(“王五”)

set.removeIf{

it.contains(“王”)

}

println(set)

8、集合转换与快捷函数


val list = mutableListOf(“张三”, “大漂亮”, “王美丽”, “王五”, “大漂亮”)

// list 转set 去重

println(list.toSet())

// list 转set 去重,再转回list

println(list.toSet().toList())

// 使用快捷去重函数 distinct

println(list.distinct()) // 其实就是内部封装了一下,先把List 转换成 可变长度的set 再转换成list ,和上面的操作是一样的

9、数组类型


在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)

10、Map 的创建


// 在kotlin 中,下面两种创建map 的方式,其实是等价的

val map = mapOf(“tiger” to “111”, “ss” to “333”)

val map1 = mapOf(Pair(“tiger”, “111”), Pair(“tiger2”, “”))

11、读取Map 的值


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”)) //找不到会直接崩溃

12、Map 的遍历


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)

}

13、可变的Map 集合


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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 20
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值