目录
Kotlin和Java集合对比
kotlin | java |
List和Set继承于Collection接口
Map继承于Map接口
如果想要调用其他的集合,直接使用java的就可以了
不可变集合只能对元素进行读取和查询,可变集合才能对元素进行增减和赋值 可变与不可变,指的是集合内部的元素和元素的组织方式,而不在于集合类型变量是 val 还是 var kotlin并未真正实现任何集合类,它只是借用了Java集合框架原有的集合类 | List和Set继承于Collection接口
Map继承于Map接口
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集合