【发布时间】:2014-02-22 01:49:30
【问题描述】:
ArrayList 的实现在底层使用了Array。然而,Arrays 被初始化为默认值(0 or null) 但ArrayList 只是空的。这是为什么呢?
int[] arr = new int[10];
String[] arr1 = new String[11];
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(arr1));
List<Integer> list = new ArrayList<Integer>(10);
System.out.println(list);
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[null, null, null, null, null, null, null, null, null, null, null]
[]
这意味着每次我使用ArrayList时,我都需要填写内容;
我在我的代码中尝试了以下部分,它正在抛出NoSuchElementException,然后我意识到它不是默认的,而Arrays do
if (list.get(i)==null){
list.add(i,x);
else:
list.add(i,list.get(i)+x)
编辑:
even List<Integer> list = new ArrayList<Integer>(10);
prints [] although I initialized the size;
【问题讨论】:
-
关于您的编辑:您没有将大小设置为 10。您将容量设置为 10。在您向其中添加元素之前,大小为 0。
-
这意味着每次我使用 ArrayList 时,我都需要填写内容 ...是的,如果您不“填写内容”,您就没有使用它.
-
打印列表时看不到任何元素,因为它的
toString()方法使用size来确定打印的元素数量,而不是数组的容量。当您创建具有初始容量10的ArrayList时,它的大小仍然是0,因为您还没有向它添加任何元素,即使存储您的对象的数组被初始化为 new Object[10] 这意味着它是填充 10 个空值。 -
@user1988876无论如何,您初始化
ArrayList的“容量”只是一个提示。如果您将容量指定为 10,您仍然可以向其添加 11 个元素。无论您指定什么容量,您的程序的结果都应该是相同的;只有性能受到影响。
标签: java arrays list arraylist