kotlin的列表

在 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 }
相关推荐
世转神风-1 天前
qt-pro文件名词解释
开发语言·qt
Fantastic_sj1 天前
[代码例题] var 和 let 在循环中的作用域差异,以及闭包和事件循环的影响
开发语言·前端·javascript
weixin_462446231 天前
EasyExcel 动态修改模板 Sheet 名称:自定义 SheetWriteHandler 拦截器
java·开发语言·easyexcel
绝世唐门三哥1 天前
使用Intersection Observer js实现超出视口固定底部按钮
开发语言·前端·javascript
Ayu阿予1 天前
C++从源文件到可执行文件的过程
开发语言·c++
C++业余爱好者1 天前
JVM优化入门指南:JVM垃圾收集器(GC)介绍
java·开发语言·jvm
福尔摩斯张1 天前
基于C++的UDP网络通信系统设计与实现
linux·c语言·开发语言·网络·c++·tcp/ip·udp
Trouvaille ~1 天前
【Java篇】基石与蓝图::Object 类与抽象类的双重奏
java·开发语言·javase·抽象类·类与对象·基础入门·object类
卜锦元1 天前
Golang中make()和new()的区别与作用?
开发语言·后端·golang
Light601 天前
破局“数据孤岛”:构建业务、财务、指标三位一体的智能数据模型
java·大数据·开发语言