例如,在传统数组中,我会声明一个这样的数组:
int array[];
然后,我稍后会像这样初始化它
array = new int[1000];
在一个数组列表中,我试图做同样的事情,但我只能在如下声明时初始化它。
ArrayList<String> array = new ArrayList<>(1000);
几乎一样
int[] array = new int[10000];
所以我想知道在单独的语句中声明后,是否有办法将数组列表初始化为例如 1000。
您可以使用ensureCapacity(int)
ArrayList<Integer> al = new ArrayList<>();
al.ensureCapacity(1000);
重要的是要注意数组列表会动态调整自己的大小。
所以我想知道在单独的语句中声明后,是否有办法将数组列表初始化为例如 1000。
你也可以这样做:
ArrayList<Integer> al;
al = new ArrayList<Integer>(1000);
这更类似于常规数组初始化。
它与声明数组的大小不同,它是您传入的初始大小
你仍然可以超越1000运行时而List不是数组
ArrayList动态将根据需要增加大小,这里 1000 是包裹在下面的数组的初始大小ArrayList
除了性能原因之外,没有理由这样做,但您可以使用该ensureCapacity方法。
ArrayList<String> array = new ArrayList<String>(100);
//code, code, code, ask user size of ArrayList
array.ensureCapacity(someUserInputSize);
我想知道在单独的语句中声明后,是否有办法将数组列表初始化为例如 1000。
你可以先声明它,然后再初始化它,就像数组一样:
ArrayList<String> array;
...
array = new ArrayList<>(1000);
但正如您所知,此ArrayList(int)构造函数的参数是后备数组的初始容量,而不是大小 - 如果预期大小已知,它只是一种可以做的优化ArrayList。在添加元素之前,ArrayList以这种方式实例化的对象仍然是空的。