声明之后有没有办法设定一个arraylist的大小?

时间:2013-10-29 03:16:53

标签: java arrays arraylist

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

int array[];

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

array = new int[1000];
在一个arraylist我试图做同样的事情,但我只能初始化它,同时声明它如下。

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

几乎相同
int[] array = new int[10000];

所以我想知道是否有一种方法可以在一个单独的声明中声明一个arraylist之后将其初始化为例如1000.

4 个答案:

答案 0 :(得分:5)

您可以使用ensureCapacity(int)

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

al.ensureCapacity(1000);

值得注意的是,数组列表会动态调整自身大小。

  

所以我想知道是否有一种方法可以在一个单独的声明中声明一个arraylist之后将其初始化为例如1000.

你也可以这样做:

ArrayList<Integer> al;

al = new ArrayList<Integer>(1000);

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

答案 1 :(得分:1)

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

如果1000而不是数组

,你仍可以超越List运行时

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

答案 2 :(得分:1)

除了性能原因,没有理由这样做,但您可以使用ensureCapacity method.

ArrayList<String> array = new ArrayList<String>(100);
//code, code, code, ask user size of ArrayList
array.ensureCapacity(someUserInputSize);

答案 3 :(得分:0)

  

我想知道是否有一种方法可以在一个单独的声明中声明一个arraylist之后将其初始化为1000个。

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

ArrayList<String> array;

...

array = new ArrayList<>(1000);

但是你知道,这个ArrayList(int)构造函数的参数是后备数组的初始容量,而不是大小 - 它只是一个优化,如果预期的话可以做到已知ArrayList的大小。以这种方式实例化的ArrayList仍将为空,直到添加元素。