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、总结

相关推荐
人间凡尔赛3 小时前
Next.js 16 生产级实战:Cache Components + View Transitions 完整指南
开发语言·javascript·ecmascript
稚南城才子,乌衣巷风流7 小时前
函数:编程中的核心概念
开发语言·前端·javascript
阿米亚波7 小时前
【C++】流式数据输入处理(不完全整理)
开发语言·c++·笔记
大模型码小白8 小时前
JAVA 集合框架进阶:List 与 Set 的深度解析与实战
java·开发语言·人工智能·windows·语言模型·list·ai编程
皓月斯语8 小时前
【C++基础】三目运算符
开发语言·数据结构·c++
初願致夕霞9 小时前
C++懒汉单例设计详解
服务器·开发语言·c++
Xzaveir9 小时前
不要用一个状态表示“号码已认证”:企业号码身份的四域模型
android·人工智能
脱胎换骨-军哥9 小时前
C++分布式系统设计:从通信引擎到分布式共识
开发语言·c++·分布式
(Charon)9 小时前
【C++】手写 MySQL 连接池(二):同步连接的获取、加锁与释放
android
脱胎换骨-军哥10 小时前
C++零成本抽象理论深度拆解:现代C++如何在不牺牲性能的前提下提供高级语法封装
java·开发语言·c++