Kotlin中集合的有别于Java,它区分可变与不可变集合,且具有丰富的操作函数,使得我们使用起来更加简单容易。
Kotlin中的集合类
Iterable:父类。所有我们可以遍历一系列的都是实现这个接口。
MutableIterable:一个支持遍历的同时可以执行删除的Iterables。
Collection:这个类相是一个范性集合。我们通过函数访问可以返回集合的size、是否为空、是否包含一个或者一些item。这个集合的所有方法提供查询,因为connections是不可修改的。
MutableCollection:一个支持增加和删除item的Collection。它提供了额外的函数,比如add 、remove、clear等等。
List:可能是最流行的集合类型。它是一个范性有序的集合。因为它的有序,我们可以使用get函数通过position来访问。
MutableList:一个支持增加和删除item的List。
Set:一个无序并不支持重复item的集合。
MutableSet:一个支持增加和删除item的Set。
Map:一个key-value对的collection。key在map中是唯一的,也就是说不能有两对key是一样的键值对存在于一个map中。
MutableMap:一个支持增加和删除item的map。
有很多不同集合可用的函数操作符,实际开发过程中,可参考API。下面简单列举几个操作符:
list相关函数
val list = listOf(1,2,3,4,5)v
list.any{ it > 3} //至少有一个元素符合给出的判断条件
list.all{ it > 3} //所有的元素都大于2
list.count{ it > 3} //返回大于3的元素的个数
list.forEach{ println(it) } //遍历集合
list.max()
list.maxBy{ -it } //返回符合条件的最大一项,如果没有则返回null
list.sumBy{ it % 2 } //返回每一项通过函数转换之后的数据总和
list.fold(3){ total,count->total+count }//在一个初始值的基础上,从第一项到最后一项通过一个函数累加所有的元素
list.filter{ it % 2 == 0}//过滤集合
list.drop(4) //返回包含去掉前n个元素的所有元素列表
list.slice(listOf(1,3)) //过滤一个list中指定index的元素
list.take(3) //返回从第一个开始的n个元素
...
Map相关函数
val map = mapOf<String,String>()
map.put("one","1") //异常,为什么?留给你们思考,结合文章开头
val map2 =mapOf("one"tolistOf(1,2,3),"two"tolistOf("2"),"three"to1)
map2.getOrDefault("four","default_value") //如果key无four,返回default_value
map2.getOrElse("four",{ "default_value" }) //与上一个类似,返回lambda值
map2.forEach{ k ,v -> println("$k -> $v")} //遍历map
map2.get("one") 等价于 map2["one"]
...
Set相关函数
val set = setOf(1,2,3,4) //创建不可变set
val muSet = mutableSetOf() //创建可变set
muSet.add(1)
muSet.remove(1)
muSet.removeIf{ it > 5 }
muSet.clear()
...