在 Kotlin 中初始化一个具有大小的 ArrayList<ArrayList<Int>>。

11

我试图在构造函数中初始化一个具有指定大小的列表,但是我的列表大小为0。

val seqList = ArrayList<ArrayList<Int>>(N) // This has the Problem
val queries = ArrayList<Query>(Q) // This works like a charm

我从用户那里获取了非零输入NQ,例如N = 100Q = 100

当我调试代码时,我发现queries.size() = 100但是seqList.size() = 0

我的假设不正确吗?seqList也应该使用N ArrayList<Int>对象进行初始化。


2
你确定 queries.size() 不为零吗?那个构造函数设置的是容量,而不是大小。 - Oliver Charlesworth
我把断点放错了,你是对的。构造函数不设置大小,而是容量 :) - droidchef
1个回答

12

很遗憾,您的假设是不正确的。

引用自ArrayList文档

提供了一个使用可调整大小数组作为其后备存储的MutableList实现。

由于JS数组本身是可调整大小的,因此此实现不提供管理容量的方法。 在JavaScript中预先分配数组大小没有速度优势,因此此实现不包括任何容量和“增长增量”概念。

特别是构造函数:

ArrayList(initialCapacity = 0))

创建一个空的 ArrayList。


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