当前位置: 代码迷 >> 综合 >> kotlin 数组、集合(Array、List、Set、Map)基础
  详细解决方案

kotlin 数组、集合(Array、List、Set、Map)基础

热度:139   发布时间:2023-09-05 18:34:07.0

一、数组

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()函数
  相关解决方案