在Kotlin中调整大小可变的二维数组

5

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

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

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

但是当使用seqList.add()时,我遇到了一个错误。

错误:未解决的引用:add

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

1个回答

7

Kotlin有单独的ListMutableList接口,如此处所述。例如,ArrayList是一个MutableList,您只需将其保存为MutableList变量,以便能够访问会改变它的方法:

val seqList: MutableList<MutableList<Int>> = ArrayList() // alternatively: = mutableListOf()

seqList.add(mutableListOf<Int>(1, 2, 3))

此外,注意标准库中的 mutableListOfarrayListOf 方法,它们很方便地用于创建列表,而不是直接使用构造函数,例如 ArrayList

1
我已经复制你的代码并运行了它,但是出现了以下错误:"Error:(6,50)Kotlin:类型不匹配:推断类型为ArrayList<ArrayList<Int>>,但是期望的是MutableList<MutableList<Int>>"。 - Misho Tek
3
由于MutableList<T>是在类型参数T上具有协变性,因此MutableList<ArrayList<Int>>不能赋值给MutableList<MutableList<Int>>ArrayList<ArrayList<Int>>也是如此。相反,可以在右侧使用ArrayList<MutableList<Int>>(),或者省略类型参数以使编译器推断它:只需使用ArrayList()即可。 - hotkey
2
糟糕,我的错,应该尝试运行代码。你可以按照@hotkey的建议去做,我会更新我的答案。 - zsmb13
2
我想补充一下,自 Kotlin 1.1 版本以来,标准库中还有另一个函数可能在这里很有用:工厂函数 MutableList(n) { ... } - hotkey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接