4

例如,在传统数组中,我会声明一个这样的数组:

int array[];

然后,我稍后会像这样初始化它

array = new int[1000];

在一个数组列表中,我试图做同样的事情,但我只能在如下声明时初始化它。

ArrayList<String> array = new ArrayList<>(1000);

几乎一样

int[] array = new int[10000];

所以我想知道在单独的语句中声明后,是否有办法将数组列表初始化为例如 1000。

4

4 回答 4

5

您可以使用ensureCapacity(int)

ArrayList<Integer> al = new ArrayList<>();

al.ensureCapacity(1000);

重要的是要注意数组列表会动态调整自己的大小。

所以我想知道在单独的语句中声明后,是否有办法将数组列表初始化为例如 1000。

你也可以这样做:

ArrayList<Integer> al;

al = new ArrayList<Integer>(1000);

这更类似于常规数组初始化。

于 2013-10-29T03:26:00.103 回答
1

它与声明数组的大小不同,它是您传入的初始大小

你仍然可以超越1000运行时而List不是数组

ArrayList动态将根据需要增加大小,这里 1000 是包裹在下面的数组的初始大小ArrayList

于 2013-10-29T03:19:49.363 回答
1

除了性能原因之外,没有理由这样做,但您可以使用该ensureCapacity方法。

ArrayList<String> array = new ArrayList<String>(100);
//code, code, code, ask user size of ArrayList
array.ensureCapacity(someUserInputSize);
于 2013-10-29T03:22:42.687 回答
0

我想知道在单独的语句中声明后,是否有办法将数组列表初始化为例如 1000。

你可以先声明它,然后再初始化它,就像数组一样:

ArrayList<String> array;

...

array = new ArrayList<>(1000);

但正如您所知,此ArrayList(int)构造函数的参数是后备数组的初始容量,而不是大小 - 如果预期大小已知,它只是一种可以做的优化ArrayList。在添加元素之前,ArrayList以这种方式实例化的对象仍然是空的。

于 2013-10-29T03:32:48.260 回答