kotlin集合框架

1、集合框架的接口类型对比

2、不可变和可变List

Kotlin 复制代码
fun main() {
    //  不可变List - 不能删除或添加元素
    val intList: List<Int> = listOf(1,2,3)
    intList.forEach{
        println(it) // 1 2 3
    }
    println("===============================")
    // 可变List - 可以删除或添加元素
    val mutableList = mutableListOf(1,2,3)
    mutableList.add(4)
    mutableList.remove(0)
    mutableList.forEach{
        println(it) // 2 3 4
    }
}

3、可变和不可变Map

Kotlin 复制代码
fun main() {
    //  不可变Map
    val m1:Map<String, Any> = mapOf("name" to "lxc", "age" to 18)
    println(m1) // {name=lxc, age=18}
    // 可变map
    val m2:MutableMap<String, Any> = mutableMapOf("name" to "lxc", "age" to 18)
    // 修改元素
    m2["name"] = "sx"
    println(m2) // {name=sx, age=18}
    // 添加元素
    m2["address"] = "china"
    println(m2) // {name=sx, age=18, address=china}
}

4、新增或删除便捷写法

Kotlin 复制代码
// 运算符可重载,可以使用运算符新增或删除集合元素。以后记录
fun main() {
    val intlist = mutableListOf<Int>()
    // 循环往集合中添加元素
    for (i in 0..10) {
        intlist += i
    }
    println(intlist) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    // 循环删除集合元素
    for (i in 0..10) {
        intlist -= i
    }
    println(intlist) // []
}

5、Pair

kotlin中Pair是一个数据类(定义类似python中的元组)。

Kotlin 复制代码
public data class Pair<out A, out B>(
    public val first: A,
    public val second: B
) : Serializable {

    /**
     * Returns string representation of the [Pair] including its [first] and [second] values.
     */
    public override fun toString(): String = "($first, $second)"
}

定义

Kotlin 复制代码
fun main() {
    val pair = Pair("name","lxc")
    println(pair) // (name, lxc)
    val p2 = "name" to "lxc"
    println(p2) // (name, lxc)
}

取值

Kotlin 复制代码
fun main() {
    // 调用方法取值
    val pair = Pair("name","lxc")
    println(pair.first) // name
    println(pair.second) // lxc
    // 解构取值
    val (name,age) = pair
    println("$name, $age") // name, lxc
}

6、总结

相关推荐
王码码203514 分钟前
Flutter for OpenHarmony: Flutter 三方库 cryptography 在鸿蒙上实现金融级现代加解密(高性能安全库)
android·安全·flutter·华为·金融·harmonyos
梦幻精灵_cq27 分钟前
学C之路:不可或缺的main()主函数框架(Learn-C 1st)
c语言·开发语言
消失的旧时光-194339 分钟前
C++ 多线程与并发系统取向(二)—— 资源保护:std::mutex 与 RAII(类比 Java synchronized)
java·开发语言·c++·并发
亚历克斯神2 小时前
Flutter for OpenHarmony:Flutter 三方库 yaml_edit 精准修改 YAML 文件内容(保留注释与格式的编辑神器)
android·flutter·华为·harmonyos
左手厨刀右手茼蒿2 小时前
Flutter for OpenHarmony: Flutter 三方库 image_size_getter 零加载极速获取图片尺寸(鸿蒙 UI 布局优化必备)
android·服务器·flutter·ui·华为·harmonyos
亚历克斯神2 小时前
Flutter for OpenHarmony:zxing2 纯 Dart 条码扫描与生成库(不仅是扫码,更是编解码引擎) 深度解析与鸿蒙适配指南
android·flutter·华为·harmonyos
钛态2 小时前
Flutter for OpenHarmony:dio_cookie_manager 让 Dio 发挥会话管理能力,像浏览器一样自动处理 Cookie 深度解析与鸿蒙适配指南
android·linux·运维·flutter·ui·华为·harmonyos
键盘鼓手苏苏2 小时前
Flutter for OpenHarmony: Flutter 三方库 ntp 精准同步鸿蒙设备系统时间(分布式协同授时利器)
android·分布式·算法·flutter·华为·中间件·harmonyos
福大大架构师每日一题2 小时前
go-zero v1.10.0发布!全面支持Go 1.23、MCP SDK迁移、性能与稳定性双提升
开发语言·后端·golang
五阿哥永琪2 小时前
1. 为什么java不能用is开头来做布尔值的参数名,会出现反序列化异常。
java·开发语言