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

相关推荐
进击的荆棘2 分钟前
C++起始之路——AVL树的实现
开发语言·数据结构·c++·stl·avl
进击的荆棘4 分钟前
C++起始之路——红黑树的实现
开发语言·数据结构·c++·stl·红黑树
StackNoOverflow2 小时前
MySQL Explain 返回列详解:从入门到实战,附 SQL 与避坑大全
android
W.A委员会9 小时前
JS原型链详解
开发语言·javascript·原型模式
止语Lab9 小时前
Go并发编程实战:Channel 还是 Mutex?一个场景驱动的选择框架
开发语言·后端·golang
她说彩礼65万9 小时前
C# 实现简单的日志打印
开发语言·javascript·c#
绿浪19849 小时前
c# 中结构体 的定义字符串字段(性能优化)
开发语言·c#
房开民10 小时前
可变参数模板
java·开发语言·算法
t***54410 小时前
如何在现代C++中更有效地应用这些模式
java·开发语言·c++
CYRUS_STUDIO10 小时前
Frida 检测与对抗实战:进程、maps、线程、符号全特征清除
android·逆向