【问题标题】:Resizeable two-dimensional array in KotlinKotlin 中可调整大小的二维数组
【发布时间】:2018-05-02 06:49:33
【问题描述】:

我想知道如何在 Kotlin 中制作可调整大小的二维数组。

C++ 示例:vector< vector<int> > my_vector

我试过的:var seqList: List<List<Int>> = ArrayList<ArrayList<Int>>()

但在使用 seqList.add() 时出现错误

错误:未解决的参考:添加

我在 stackoverflow 上阅读了一些关于 Kotlin 中二维数组的问题,但它们是关于不可调整大小的数组或已过时

【问题讨论】:

    标签: java arrays list kotlin arraylist


    【解决方案1】:

    Kotlin 有单独的ListMutableList 接口,例如here 解释。 ArrayListMutableList,您只需将其保存为 MutableList 变量即可访问对其进行变异的方法:

    val seqList: MutableList<MutableList<Int>> = ArrayList() // alternatively: = mutableListOf()
    
    seqList.add(mutableListOf<Int>(1, 2, 3))
    

    还要注意标准库中的mutableListOfarrayListOf 方法,它们可以方便地创建列表,而不是直接使用ArrayList 的构造函数。

    【讨论】:

    • 我已粘贴您的代码并运行它,但我收到“错误:(6, 50) Kotlin: Type mismatch: inferred type is ArrayList> but MutableList> 是预期的”
    • 由于MutableList&lt;T&gt;T 的变体,MutableList&lt;ArrayList&lt;Int&gt;&gt; 不能分配给MutableList&lt;MutableList&lt;Int&gt;&gt;ArrayList&lt;ArrayList&lt;Int&gt;&gt; 也不能分配。相反,在右侧使用ArrayList&lt;MutableList&lt;Int&gt;&gt;(),或省略类型参数以使编译器推断它:只需ArrayList()
    • 糟糕,我的错,应该尝试运行代码。你可以按照@hotkey 的建议去做,我会更新我的答案。
    • 我想补充一点,自 Kotlin 1.1 以来标准库中还有另一个函数可能在这里有用:工厂函数 MutableList(n) { ... }
    猜你喜欢
    • 2011-02-08
    • 2017-01-05
    • 2015-02-27
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 2016-02-22
    • 2021-03-20
    • 1970-01-01
    相关资源
    最近更新 更多