原文链接 Kotlin Collections
现代的软件一般比较复杂,程序语言中的基本数据类型往往不能满足需要,除了基本的数据类型以外,还有对象的容器也非常的重要,比如线性容器(数组,列表和Set)和二维容器(哈希表)等。今天就来学习一下Kotlin中的容器。
Kotlin Collections
集合就是用于处理一组对象的容器,因为用的人较多,所以就成了标准库。常见的集合有三种主要类型,列表类,Set类和Map类。
线性容器
这里并不单纯指类List,主要的意思是线性的容器,它的特点是以相对顺序存储同一类型的对象,有一个整数索引(index)来表示其相对的位置,查找性能差,其他还好。代表为数组。
数组
最简单也是使用最为广泛的线性容器,不用过多的介绍了,可以参考之前的文章。
最大的弊端就是长度是固定的,长度在创建数组时就确定了,后面就改不了了。所以,必须在事先要能够确定数组的长度。
创建复杂数组
比如数组的元素是一个Collection,而非常见的基本数据类型,这时要如何写?
val carray = arrayOf<MutableList<Int>>(
mutableListOf(),
mutableListOf()
)
val narray = Array<MutableList<Int>>(10) {
mutableListOf() }
关键就在于要声明元素的类型,其他的与基本数据类型的数组是一样的。另外,如果数组数量比较少,方便直接写,那就用字面构造函数,其实很方便。或者用数组元素的构造方法也可以。
多维数组
以最为常见的二维数组来说,要如何创建?
val smatrix = arrayOf(
arrayOf(1, 2, 3),
arrayOf(4, 5, 6),
arrayOf(7, 8, 9)
)
val matrix = Array(5) {
IntArray(6) }
Ranges
用于表示区间的表达式,最为直观理解就是数组的索引,用操作符…来表示区间,比如0~9,就是0…9,通常用于for-loop中:
if (i in 1..4) {
// equivalent of i >= 1 && i <= 4
print(i