在 kotlin中,列表是一种常见的数据结构,用于存储有序的元素集合。 kotlin的标准库提供了 List 接口及其实现类 ArrayList、LinkedList 等,以及一些扩展函数来操作和处理列表。
1.创建列表
// 创建一个可变列表
val mutableList = mutableListOf(1, 2, 3)
// 创建一个不可变列表
val immutableList = listOf("apple", "banana", "orange")
2.访问列表元素
val fruits = listOf("apple", "banana", "orange")
val firstFruit = fruits[0]
val lastFruit = fruits.last()
3.列表操作
val numbers = mutableListOf(1, 2, 3)
numbers.add(4) // 添加元素
numbers.remove(2) // 移除元素
numbers.addAll(listOf(5, 6)) // 添加多个元素
numbers.removeAt(1) // 移除索引为 1 的元素
numbers.clear() // 清空列表
4.列表遍历
val fruits = listOf("apple", "banana", "orange")
for (fruit in fruits) {
println(fruit)
}
fruits.forEach { fruit ->
println(fruit)
}
5.列表过滤和映射
val numbers = listOf(1, 2, 3, 4, 5)
val evenNumbers = numbers.filter { it % 2 == 0 }
val doubledNumbers = numbers.map { it * 2 }
6.列表排序
val numbers = mutableListOf(5, 3, 1, 4, 2)
numbers.sort() // 升序排序
numbers.sortDescending() // 降序排序
7.列表查询
val fruits = listOf("apple", "banana", "orange")
val containsApple = fruits.contains("apple")
val indexOfBanana = fruits.indexOf("banana")
8.列表转换为字符串
val fruits = listOf("apple", "banana", "orange")
val str = fruits.joinToString(", ")
MutableList 接口
MutableList 是 List 接口的子接口,它提供了修改列表内容的方法,如 add、remove 等。
val mutableList = mutableListOf(1, 2, 3)
mutableList.add(4)
mutableList.removeAt(1)
不可变列表与可变列表:
List 和 MutableList 分别表示不可变列表和可变列表。不可变列表的内容不能更改,而可变列表可以添加、删除和修改元素。
val immutableList = listOf(1, 2, 3)
val mutableList = mutableListOf(4, 5, 6)
不可变列表确保其元素在创建后不能被修改,意味着你不能通过索引直接修改元素的值:
val immutableList = listOf(1, 2, 3)
// 下面的代码会导致编译错误
immutableList[0] = 10
创建空列表:
val emptyList = emptyList<Int>()
val emptyMutableList = mutableListOf<Int>()
9.列表与数组之间的转换
val array = arrayOf(1, 2, 3)
val list = array.toList()
val list = listOf(4, 5, 6)
val array = list.toTypedArray()
列表的常见操作时间复杂度:
获取元素:O(1)
添加元素:可变列表 O(1),不可变列表 O(n)
删除元素:可变列表 O(n),不可变列表 O(n)
修改元素:可变列表 O(1),不可变列表 O(n)
搜索元素:O(n)
扩展函数:
标准库提供了许多扩展函数来处理列表,如 filter、map、reduce、fold 等。这些函数让处理列表变得更加方便。
val numbers = listOf(1, 2, 3, 4, 5)
val evenNumbers = numbers.filter { it % 2 == 0 }
val sum = numbers.reduce { acc, value -> acc + value }