Kotlin对比Java 入门学习记录(伍)

Kotlin入门学习记录
2023/12/01

集合

在KT中和Java一样集合分为两种ListSetMap,和Java不同的是KT还分为可变集合和不可变集合

List

不可变List,一旦声明 集合中的数据将无法进行修改,可以使用下标进行访问,代码实现如下

val listOf = listOf("LY_C", "CRY", "TEST")
println(listOf[1]) //CRY 
println(listOf.getOrElse(3){"Unknow"}) //Unknow
println(listOf.getOrNull(3)?:"Unknow") //Unknow

List中常见的使用函数:

函数名作用
getOrElse获取指定下标的值失败则执行后方的lambda
getOrNull获取指定下标的值失败则返回null

可变ListmutableListOf,和Java中的ArrayList很像,集合中的数据可以进行修改,代码实现如下

var mutableListOf = mutableListOf("LY_C")
mutableListOf.add("CRY")
mutableListOf.add("TEST")
println(mutableListOf) //[LY_C, CRY, TEST]
mutableListOf.remove("TEST")
println(mutableListOf) //[LY_C, CRY]

Java实现ArrayList,代码如下

ArrayList list = new ArrayList(Collections.singleton("LY_C"));
list.add("CRY");
list.add("TEST");
System.out.println(list); //[LY_C, CRY, TEST]
list.remove("TEST");
System.out.println(list); //[LY_C, CRY]

使用toListtoMutableList实现mutableListOflist互相转换,代码实现如下

listOf("LY_C", "CRY", "TEST").toMutableList()
mutableListOf("LY_C", "CRY", "TEST").toList()

mutator函数

将能够修改可变列表的函数称为mutator函数,以下为常见的mutator函数

val mutableListOf = mutableListOf("LY_C","TEST")
mutableListOf += "CRY"
mutableListOf -= "CRY"
mutableListOf.removeIf{ it.contains("TEST")}
println(mutableListOf) //[LY_C]

List遍历

有三种遍历方式,for inforEachforEachIndexed,其中forEachIndexed在遍历时要获取索引,前两种Java中也有,与Java中不同的是KT传入的是lambda,代码实现如下

val mutableListOf = mutableListOf("LY_C","TEST")
mutableListOf += "CRY"
for (s in mutableListOf) {
	print(s) //LY_CTESTCRY
}
println()
mutableListOf.forEach {
	print(it) //LY_CTESTCRY
}
println()
mutableListOf.forEachIndexed{ index: Int, s: String ->
	print(" ${index}:${s} ") // 0:LY_C  1:TEST  2:CRY 
}

Java中的for inforEach遍历如下:

ArrayList list = new ArrayList();
list.add("LY_C");
list.add("CRY");
list.add("TEST");
list.forEach(System.out::print);//LY_CCRYTEST
System.out.println();
for (Object o : list) {
	System.out.print(o);//LY_CCRYTEST
}

解构

一次性给多个变量赋值就是解构,代码实现如下

val mutableListOf = mutableListOf("LY_C","TEST","CRY")
var(name1,name2,mame3) = mutableListOf

使用_过滤不使用的元素,JVM不会将_位置的元素提取出进行赋值,代码实现如下

val mutableListOf = mutableListOf("LY_C","TEST","CRY")
var(name1,_,mame3) = mutableListOf

Set

List一样也分为可变setOf和不可变mutableSetOf,代码实现如下
注意
Set集合不能包含相同元素
Set集合不能使用下标进行访问元素

val of = setOf("LY_C", "CRY", "TEST")
println(of.elementAt(1)) //CRY
var mutableSetOf = mutableSetOf("LY_C")
mutableSetOf.add("CRY")
mutableSetOf.add("TEST")
println(mutableSetOf)//[LY_C, CRY, TEST]

distinct快捷函数

ListSet互相转换,一般用于去除重复元素,使用distinct快捷函数也可以实现相同结果,代码实现如下

val listOf = listOf("LY_C", "CRY", "TEST", "LY_C", "CRY", "TEST")
        .toSet()
        .toList()
println(listOf)//[LY_C, CRY, TEST]
//与上方代码效果一致
println(listOf("LY_C", "CRY", "TEST", "LY_C", "CRY", "TEST").distinct())//[LY_C, CRY, TEST]

Map

Map就是键值对,to前为keyto后为value,也分为可变mapOf和不可变mutableMapOf,代码实现如下

val map = mapOf("1" to "LY_C", "2" to "CRY", "3" to "TEST")
println(map["1"])
println(map)
val mapOf = mutableMapOf("1" to "LY_C", "3" to "TEST")
mapOf.put( "2" , "CRY")
mapOf.remove("3")
println(mapOf)

注意
上边的实现看起来是使用to关键字,其实是to函数将左右的值转换为一对Pair,代码实现如下

val mapOf1 = mapOf(Pair("1", "LY_C"), Pair("2", "CRY"), Pair("3", "TEST"))

Map中的特殊函数getOrPut,如果没有指定的key会进行put操作,代码实现如下

val mapOf = mutableMapOf("1" to "LY_C", "3" to "TEST")
mapOf.getOrPut("2"){"CRY"}
println(mapOf)//{1=LY_C, 2=CRY, 3=TEST}

数组

数组
随便写个例子

var intArrayOf = intArrayOf(1, 2, 3)
intArrayOf += 4
intArrayOf.forEach { print(it) }//1234
  • 28
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LuKey_C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值