ArrayList
的实现使用Array
。但是,Arrays
初始化为默认值(0 or null)
,但ArrayList
只是空的。为什么是这样?为什么数组初始化为默认值,但不是在java中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
做
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;
关于你的编辑填写新的集合(list):你没有大小设置为10。您的能力设置为10,大小为0直到你添加一个元素。 –
*这意味着每次我使用ArrayList时,我都需要填充* ...是的,如果您不“填充内容”,则不会使用它。 –
当您打印列表时,您看不到任何元素,因为其'toString()'方法使用'size'来确定打印的元素数量,而不是数组的容量。当你创建初始容量为10的'ArrayList'时,它的大小仍然是'0',因为你还没有添加任何元素,即使存储你的对象的数组被初始化为新的Object [10],这意味着它是充满10个空值。 – Pshemo