容器是用于存放数据的载体。容器分为数组、集合。
Kotlin 数组 1. 特点数组是一种初始化时指定容器大小,不可以动态调整其大小的容器。元素按顺序存储在一串连续的内存段上。
2. 创建方式- arrayOf 创建数组 创建一个数组并传递元素值给它,集合中的元素可以是任意类型
val array = arrayOf(1, 2, 3)
val arr = arrayOf(1, true, "kotlin", JSONObject()) // 集合中的元素可以是任意类型
- arrayOfNulls 创建数组 创建一个指定大小的、所有元素都为空的数组,但必须指定集合中的元素类型
val args = arrayOfNulls(6)
- 动态创建数组 用接受数组大小以及一个方法参数的 Array 构造方法,用作参数的方法能够返回给定索引的每个元素初始值:
- 获取元素
val array = arrayOf(1, 2, 3, 4, 5)
array[index] //获取数组的第 index 个元素,下标从 0 开始
- for 循环 – 元素遍历
fun main() {
val args = arrayOf(1, 2, 3, 4, 5)
for (item in args) {
println(item)
}
}
- for 循环 – 下标遍历
fun main() {
val args = arrayOf(1, 2, 3, 4, 5)
for (i in args.indices) {
println(i.toString() + "→" + args[i])
}
}
- for 循环 – 遍历元素(带索引)
fun main() {
val args = arrayOf(1, 2, 3, 4, 5)
for ((index, item) in args.withIndex()) {
println("$index ===> $item")
}
}
- forEach 遍历数组
fun main() {
val args = arrayOf(1, 2, 3, 4, 5)
args.forEach {
println(it)
}
}
- forEach 增强版
val args = arrayOf(1, 2, 3, 4, 5)
args.forEachIndexed{index, item ->
println("$index ===> $item")
}
Kotlin 集合
各种集合对于解决问题都具有重要意义,并且经常用到。与数组不同的是可变集合的大小可以动态改变。
- List 集合:是一个有序列表,可通过索引访问元素。元素可以在 list 中出现多次、元素可重复。
- Set 集合:是元素唯一的集合。一组无重复的对象。
- Map 集合:是一组键值对。键是唯一的,每个键都刚好映射到一个值,值可以重复。
fun main() {
// 可变列表,必须指定元素类型
val list = mutableListOf()
list.add("android")
list.add("ios")
list.add("kotlin")
val list2 = mutableListOf("java","c#","spring")
list2.add("c++")
// 不可变列表,必须指定元素类型;必须指定初始化数据元素
val list3 = listOf(1,2,3)
}
2. Map 集合创建
fun main() {
// 可变 map
val map = mutableMapOf()
map[1] = "android"
map[2] = "ios"
map[3] = "android"
// 使用 Pair 指定集合中初始化的元素
val map2 = mutableMapOf(Pair(1,"A"), Pair(2,"B"))
// 不可变 map,元素使用 Pair 包装;必须指定初始元素
val map3 = mapOf(Pair(1,"kotlin"))
}
3. Set 集合创建
fun main() {
// 可变 Set,元素唯一
val set = mutableSetOf()
set.add("android")
set.add("ios")
set.add("windows")
set.add("windows") // 这个是添加不进去的噢
for (item in set) {
println(item)
}
val set2 = mutableSetOf("abc","def","ghk")
set2.add("abc") // 这个是添加不进去的噢
// 不可变 Set,必须指定初始元素
val map3 = setOf(1, 2, 3)
}
}
集合的操作
fun main(
val list = mutableListOf(1,3,5,7,9)
list.reverse()
list.forEach {
print("$it ")
}
}
2. 排序,从小到大
fun main() {
val list = mutableListOf(2,1,3,5,7,5)
list.sort()
list.forEach {
print("$it ")
}
}
3. 排序,从大到小
fun main() {
val list = mutableListOf(2,1,3,5,7,5)
list.sortDescending()
list.forEach {
print("$it ")
}
}