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

相关推荐
梵刹古音几秒前
【C++】 析构函数
开发语言·c++
非凡ghost20 分钟前
PowerDirector安卓版(威力导演安卓版)
android·windows·学习·软件需求
Sylvia-girl26 分钟前
IO流~~
java·开发语言
Re.不晚42 分钟前
JAVA进阶之路——无奖问答挑战3
java·开发语言
代码游侠43 分钟前
C语言核心概念复习——C语言基础阶段
linux·开发语言·c++·学习
独行soc43 分钟前
2026年渗透测试面试题总结-19(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
㓗冽1 小时前
60题之内难题分析
开发语言·c++·算法
dingdingfish1 小时前
Bash学习 - 第3章:Basic Shell Features,第5节:Shell Expansions
开发语言·学习·bash
rainbow68891 小时前
C++开源库dxflib解析DXF文件实战
开发语言·c++·开源
deepxuan1 小时前
Day7--python
开发语言·python