一、数组
1.1 Array的分类
kotlin为数组增加了一个Array类,Kotlin 的数组是容器类, 提供了 ByteArray, CharArray, ShortArray, IntArray, LongArray, BooleanArray, FloatArray, 、DoubleArray用来表示各个类型的数组。
1.2 Array的创建
数组的创建两种方式:
使用arrayOf()、arrayOfNulls()、emptyArray()工具函数;
使用Array(size:Int,init:(Int)->T)构造器
fun main(args: Array<String>) {//[1,2,3]val a = arrayOf(1, 2, 3)//[0,2,4]val b = Array(3, { i -> (i * 2) })//读取数组内容println(a[0]) // 输出结果:1println(b[1]) // 输出结果:2
}
使用arrayOf()函数: 无须显式指定数组的长度,但需要依次列出每个数组元素。这种方式相当于Java数组的静态初始化。
使用arrayOfNulls()函数: 需要显式指定数组的长度,数组元素全部被初始化为null。这种方式相当于Java数组的动态初始化。
使用emptyArray()函数: 创建一个长度为0的只读空数组。
使用Array(size:Int,init:(Int)->T)构造器: 需要显式指定数组的长度,并可通过Lambda表达式来动态计算各数组的值。
ByteArray, CharArray, ShortArray, IntArray, LongArray, BooleanArray, FloatArray, 、DoubleArray其用法同Array一样
二、集合类型
2.1 List类型
Kotlin的集合分类:
可变集合类(Mutable)
不可变集合类(Immutable)
2.1.1 不可变集合类(Immutable)
使用listOf函数来构建一个不可变的List(只读的,不可变的、可序列化的List):
listOf()用于创建没有元素的空List
listOf(element: T)用于创建只有一个元素的List
listOf(vararg elements: T)用于创建拥有多个元素的List
//创建一个空List
val mList: List<Int> = listOf()
println(mList)//创建只有一个元素的List
val mList: List<Int> = listOf(0)
println(mList)//创建多个元素的List
val mList: List<Int> = listOf(1, 3, 5, 7, 9)
println(mList)
不可变集合类不能使用add、remove、clear等函数
2.1.2 可变集合类(Mutable)
List的可变集合有两种:
mutableListOf(): MutableList
arrayListOf(): ArrayList
目前两个生产的集合区别不大。
toMutableList()转换函数:
如果已经有了一个不可变的List,想把他转换成可变的List,可直接调用转换函数toMutableList()
2.2 Set类型
Set类型集合的使用和List类型集合大致相同。
声明并初始化Set的集合:使用setOf(..)函数声明并初始化MutableSet的集合:使用mutableSetOf(..)函数
val set1 = setOf(1,2,"3","4","2",1,2,3,4,5)
val mutableSet1 = mutableSetOf(1,2,"3","4","2",1,2,3,4,5)
val mutableSet2 : HashSet<String> // 这里的HashSet<>和Java里面的HashSet<>一致// 遍历
for(value in set1){print("$value \t")
}
输出结果:
1 2 3 4 2 3 4 5
可以看出,Set类型集合会把重复的元素去除掉。这一点和Java是不谋而合的。这个特性也是Set类型集合与List集合类型的区别所在。
2.2 Map类型
与JAVA相同当我们的键存在重复时,集合会过滤掉之前重复的元素。
Map同样也分为不可变与可变集合。其中:
不可变的Map类型集合的初始化使用:mapOf()函数可变的Map类型集合的初始化使用:mutableMapOf()函数