2

我想实例化一个 ArrayLists (泛型)的 ArrayList。我有这个代码:

private ArrayList<ArrayList<GameObject>> toDoFlags;
toDoFlags = new ArrayList<ArrayList<GameObject>>(2);

我这样做对吗?它可以编译,但是当我查看 ArrayList 时,它的大小为 0。

4

2 回答 2

6

你做对了。它的长度为零的原因是你还没有添加任何东西。

您传递的“2”是支持 ArrayList 的数组的初始容量。但是 the 的size()方法ArrayList不返回其支持数组的初始容量......它返回列表中实际元素的数量。

通常,您不应该使用该initialCapacity参数。当您拥有大型 ArrayList 时,这是一种性能优化。通过显式分配大量空间,您可以在向列表中添加越来越多的项目时节省重新分配所需的时间。但在这种情况下,您可能没有一个非常大的列表。

此外,您应该考虑编写一个类来存储数据,而不是使用 ArrayList 的 ArrayList。

于 2013-09-01T04:03:38.023 回答
1

ArrayList 在您添加时会扩展。整数容量参数只是设置后备数组的初始大小。将容量设置为两个并不意味着 ArrayList 中有两个元素,而是在必须声明更大的内部数组之前,可以将两个元素添加到 ArrayList 中。

于 2013-09-01T04:04:34.653 回答