Kotlin day03 集合

目录

 

Kotlin和Java集合对比

List

Set

Map


Kotlin和Java集合对比

kotlinjava

List和Set继承于Collection接口

  • List下有ArrayList
  • Set下有HashSet,LinkedHashSet

Map继承于Map接口

  • Map下有LinkedHashMap,HashMap

如果想要调用其他的集合,直接使用java的就可以了

  • 可变集合类(Mutable)
  • 不可变集合类(Immutable)。

不可变集合只能对元素进行读取和查询,可变集合才能对元素进行增减和赋值

可变与不可变,指的是集合内部的元素和元素的组织方式,而不在于集合类型变量是 val 还是 var

kotlin并未真正实现任何集合类,它只是借用了Java集合框架原有的集合类

List和Set继承于Collection接口

  • List下有ArrayList,Vector,LinkedList
  • Set下有HashSet,LinkedHashSet,TreeSet

Map继承于Map接口

  • Map下有Hashtable,LinkedHashMap,HashMap,TreeMap

Java中所有的集合都是可变的,可以对任何集合实行增删改查

List

listOf()返回不可变的List集合
listOfNotNull()返回不可变的List集合
mutableListOf()返回可变的MutableList集合
arrayListOf()返回可变的ArrayList集合
  • 常用方法 
        这篇文章写的很详细 https://blog.csdn.net/sunlit_6/article/details/80860810

Set

  • 集合元素不可重复
setOf()返回不可变的set集合,集合内容有序
mutableSetOf()返回可变的MutableSet集合,集合内容有序
hashSetOf()返回可变的HashSet集合,集合内容无序
linkedSetOf()返回可变的LinkedHashSet集合,集合内容有序,建议开发中用这个
sortedSetOf()返回可变的TreeSet集合,它会把集合中的数据按序排序

代码定义

 var set= setOf<String>("数据2","数据1","数据3")
 var set2= mutableSetOf<String>("数据2","数据1","数据3")
 var set3= hashSetOf<String>("数据2","数据1","数据3")
 var set4= linkedSetOf<String>("数据2","数据1","数据3")
 var set5= sortedSetOf<String>("数据2","数据1","数据3")
//对应每行输出结果是:
数据2 数据1 数据3
数据2 数据1 数据3
数据3 数据1 数据2
数据2 数据1 数据3
数据1 数据2 数据3
  • 增删改查
//增加数据
set4.add("数据4")
set4.addAll(set)

//两种查询方式for in和forEach
for (i in set4){
    Log.e("sujd===",i)
}

set4.forEach({Log.e("sujd===",it)})

//删除特定元素
set4.remove("数据1")
//批量删除元素
set4.removeAll(setOf("数据1", "数据2"))
//清空集合
set4.clear()

 

  • 常用的操作方法
 //创建不可变集合,返回值是Set
    var set = setOf("Java", "Kotlin", "Go")
    //判断是否所有元素的长度都大于4
    println(set.all { it.length > 4 })
    //判断是否任一元素的长度大于4
    println(set.any { it.length > 4 })
    //以Lambda表达式的值为key,集合元素为value,组成Map集合
    val map = set.associateBy { "学习" + it + "语言" }
    println(map)

    println("Java" in set)
    println("Go" !in set)

    //返回删除Set集合前面两个元素后的集合
    val dropedList = set.drop(2)
    println(dropedList)

    //对Set集合元素进行过滤:要求集合元素包含li
    val fliteredList = set.filter { "li" in it }
    println(fliteredList)

    //查找Set集合中包含li的元素,如果找到就返回该元素,否则就返回null
    val foundStr1 = set.find { "li" in it }
    println(foundStr1)

    //查找Set集合中的所有字符串拼接在一起
    val foldedList = set.fold("", { acc, e -> acc + e })
    println(foldedList)

    //查找某个元素的出现位置
    println(set.indexOf("Go"))

    //将每个集合元素映射成新值,返回所有新值组成的Set集合
    val mappedList = set.map { "学习" + it + "编程" }
    println(mappedList)

    //获取最大值
    println(set.max())

    //获取最小值
    println(set.min())

    //反转集合顺序
    val reversedList = set.reversed()
    println(reversedList)

    val bSet = setOf("Lua", "Erlang", "Kotlin")
    //计算两个集合的交集
    println(set intersect bSet)
    //计算两个集合的并集
    println(set union bSet)
    //集合相加,相当于并集
    println(set + bSet)
    //集合相减,减去公共的元素
    println(set - bSet)

 

Map

mapOf()返回不可变的Map集合
mutableMapOf()返回可变的mutableMap集合
hashMapOf()返回可变的hashMap集合
linkedMapOf()返回可变的linkedMap集合
sortedMapOf()返回可变的TreeMap集合
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小小苏的小小苏

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

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

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

打赏作者

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

抵扣说明:

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

余额充值