collections - Kotlin 的列表缺少 "add"、 "remove"、 map 缺少

在 Java 中,我们可以执行以下操作

public class TempClass {
    List<Integer> myList = null;
    void doSomething() {
        myList = new ArrayList<>();
        myList.add(10);
        myList.remove(10);
    }
}

但是如果我们像下面这样直接重写成Kotlin

class TempClass {
    var myList: List<Int>? = null
    fun doSomething() {
        myList = ArrayList<Int>()
        myList!!.add(10)
        myList!!.remove(10)
    }
}

我收到了未从我的列表中找到 addremove 函数的错误

我解决了将它转换为 ArrayList 的工作,但需要转换它很奇怪,而在 Java 中则不需要转换。这违背了拥有抽象类 List 的目的

class TempClass {
    var myList: List<Int>? = null
    fun doSomething() {
        myList = ArrayList<Int>()
        (myList!! as ArrayList).add(10)
        (myList!! as ArrayList).remove(10)
    }
}

有没有办法让我使用 List 但不需要强制转换,就像在 Java 中可以做的那样?

最佳答案

Unlike many languages, Kotlin distinguishes between mutable and immutable collections (lists, sets, maps, etc). Precise control over exactly when collections can be edited is useful for eliminating bugs, and for designing good APIs.

https://kotlinlang.org/docs/reference/collections.html

您需要使用 MutableList列表。

class TempClass {
    var myList: MutableList<Int> = mutableListOf<Int>()
    fun doSomething() {
        // myList = ArrayList<Int>() // initializer is redundant
        myList.add(10)
        myList.remove(10)
    }
}

MutableList<Int> = arrayListOf()应该也可以。

关于collections - Kotlin 的列表缺少 "add"、 "remove"、 map 缺少 "put"等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37913252/

相关文章:

java - Java 的 String[] 的 Kotlin 等价物是什么?

random - 如何在 Kotlin 中获取随机数?

kotlin - Kotlin 中的惯用登录方式

inheritance - 在 Kotlin 中扩展数据类

kotlin - 什么是 Kotlin 双键 (!!) 运算符?

kotlin - 在 Kotlin 中试用资源

kotlin - 为什么我们使用 "companion object"作为 Kotlin 中 Jav

design-patterns - 如何在 Kotlin 中实现 Builder 模式?

kotlin - 如何在 Kotlin 中将 String 转换为 Long?

dictionary - 如何在 Kotlin 中将列表转换为 map ?