一、集合——只读集合 & 可变集合
kotlin.collections.Collection:只读集合,执行从该集合中读取数据的操作,可遍历集合中的元素、获取集合大小、判断集合中是否包含某个元素
kotlin.collections.MutableCollection:可变集合,执行修改集合中的数据的操作,继承了kotlin.collections.Collection接口,还提供了方法来添加和移除元素、清空集合等
Kotlin 对待 Java 标准类的方式:在 Kotlin 看来,java.util.ArrayList 和 java.util.HashSet 分别继承自 MutableList 接口 和 MutableSet 接口。同理,其它集合库(LinkedList、SortedSet等)也是如此。
集合类型:
Set、Map、List(集、映射、列表)可以看作集合的三大类)
集合类型只读可变
SetsetOfmutableSetOf、hashSetOf、linkedSetOf、sortedSetOf
MapmapOfmutableMapOf、hashMapOf、linkedMapOf、sortedMapOf
ListlistOfmutableListOf、arrayListOf
补充:
1、Kotlin中创建集合的方式例子
val set = hashSetOf(1, 7, 53) //HashSet类
val list = arrayListOf(1, 7, 53) //ArrayList类
val map = hashMapOf(1 to "one", 7 to "seven", 53 to "fifty-three") //HashMap类
2、setOf 函数可以创建一个集合:
fun mix(c1:Color, c2:Color) =
when(setOf(c1, c2)){
setOf(RED, YELLOW) -> ORANGE
setOf(BLUE, YELLOW) -> GREEN
setOf(VIOLET, YELLOW) -> INDIGO
else -> throw Exception("Dirty Color")
}
3、Kotlin没有采用它自己的集合类,而是采用的标准的Java集合类,并且Kotlin还在Java类上新增了方法,如:
val number = setOf(1,2,14)
println(number.max())
二、数组——对象数组和基本类型的数组
Kotlin 中的一个数组是一个带有类型参数的类,其元素类型被指定为相应的参数类型。
1、数组类型
数组类型的类型参数始终会变成对象类型: 如果声明了一个 Array< Int > ,那么它将会是一个包含装箱整型的数组(它的 Java 类型将是 java.lang.Integer[] )。
声明基本数据类型的数组: Kotlin 提供了若干独立的类,每一种基本数据类型都对应一个。如 Int 类型值的数组叫做 IntArray,还有 ByteArray、CharArray、BooleanArray 等。(它们将被编译为基本数据类型的数组,如 int[]、byte[]、char[]、boolean[] )
2、在 Kotlin 中创建 对象数组 的方法:
① arrayOf 函数
arrayOf 函数中包含的元素即指定为该函数的实参
val strings = arrayOf("a", "b", "c")
② arrayOfNulls 函数
创建一个给定大小的数组,包含的是null元素
val arrayOfNulls = arrayOfNulls<String>(9)
println (arrayOfNulls.joinToString(" "))
③ Array构造方法
Array构造方法接收数组的大小和一个 lambda 表达式,调用 lambda 表达式来创建每一个数组元素
使用非空元素类型来初始化数组,但不用显式地传递每个元素
val letters = Array<String>(26){ i -> ('a' + i).toString() }
println(letters.joinToString(" ")
3、在 Kotlin 中创建 基本数据类型数组 的方法:
① 构造方法(如 IntArray)
该构造方法接收 size 参数并返回一个使用对应基本数据类型默认值(通常是0)初始化好的数组
val fiveZeros = IntArray(5)
② 工厂函数(如 IntArray 的 intArrayOf)
该函数接收变长参数的值,并创建存储这些值的数组
val fiveInts = IntArrayOf(1,2,3,4,5)
③ 另一种构造方法
该构造方法接收一个大小和一个用来初始化每个元素的lambda
val squares = IntArray(5) { i -> (i+1) * (i+1)}
三、集合和数组的遍历
1、遍历 Set
① for-in 循环
val seasons = setOf("春天", "夏天", "秋天", "冬天")
for(season in seasons){
println(season)
}
② forEach()方法
Set 集合继承了 Iterable,因此可使用该接口中定义的 forEach()方法来遍历集合。
该方法需要接受 Lambda 表达式作为参数,该 Lambda 表达式负责对集合元素进行处理。
val seasons = setOf("春天", "夏天", "秋天", "冬天")
seasons.forEach {
println(it)
}
2、遍历 Map
① for-in 循环
val colorMap = mapOf<String, String>("blue" to "蓝色", "balck" to "黑色", "white" to "白色")
//第一种
for (color in colorMap) {
println("${color.key} -> ${color.value}")
}
//第二种
for ((k, v) in colorMap) {
println("$k -> $v")
}
② forEach()方法
val colorMap = mapOf<String, String>("blue" to "蓝色", "balck" to "黑色", "white" to "白色")
colorMap.forEach {
println("${it.key} -> ${it.value}")
}
3、遍历 List
① for-in 循环
val list = listOf("Apple","Banana","Orange","Pear","Grape")
for (fruit in list) {
println(fruit)
}
② forEach()方法
val list = listOf(1,2,3)
list.forEach {
println(it)
}
3、遍历数组
① for-in 循环
val array = arrayOf("a", "b", "c")
//1.通过索引
for(i in array.indices) {
println(array[i])
}
//2.通过库函数withIndex
for((index, value) in array.withIndex()){
println("the element at $index is $value")
}
//3.直接遍历 最常规的数组遍历方式
for(item in array){
println(item)
}
② forEach()方法
数组也可以使用 forEach() 方法进行遍历,这是由于:数组使用 foreach 时,JVM在底层把 foreach 转换为普通 for 来循环处理的,与 Iterable 无关
val array = arrayOf("a", "b", "c")
//1. forEach
array.forEach {
println("$it")
}
//2. forEachIndexed 遍历数组带索引
array.forEachIndexed { index, item -> println("$index -> $item") }
————————————————
版权声明:本文为CSDN博主「浅唱整个春天」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_32677531/article/details/126092637