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 }
相关推荐
我不是疯子是傻子4 分钟前
Qt 实时曲线卡顿优化:从QPainter到OpenGL的3级加速实战
开发语言·qt
zlinear数据采集卡6 分钟前
D223 ADC数据处理流水线:从原始采样值到工程单位的完整转换链
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
nnerddboy1 小时前
Rust教程04:引用、借用与切片
开发语言·后端·rust
jerryinwuhan1 小时前
《Python数据预处理》第四章
开发语言·python
长江&后浪1 小时前
防火墙的描述
开发语言·网络·php
观无2 小时前
若依EasyExcel实现单元格合并
开发语言·前端·javascript
雨晨源码(同名B站)2 小时前
基于Python的网易云音乐评论数据情感化分析系统 音乐爬虫信息可视化 |SnowNLP评论情感分析
开发语言·hadoop·爬虫·python·信息可视化·毕业设计
我不是疯子是傻子2 小时前
串口通信数据帧粘包拆包再进化:基于 Qt 的滑动窗口与 CRC 校验实战
开发语言·qt
程序员老陆2 小时前
Qt中实现窗口真全屏(覆盖Windows任务栏)
开发语言·windows·qt
霸道流氓气质2 小时前
Java中信号量(Semaphore):从本地到分布式
java·开发语言·分布式