例如,在传统的数组中,我会声明一个这样的数组:
int array[];
然后,我稍后会像这样初始化它
array = new int[1000];
在一个arraylist我试图做同样的事情,但我只能初始化它,同时声明它如下。
ArrayList<String> array = new ArrayList<>(1000);
与
几乎相同int[] array = new int[10000];
所以我想知道是否有一种方法可以在一个单独的声明中声明一个arraylist之后将其初始化为例如1000.
答案 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
仍将为空,直到添加元素。