将单个元素添加到ArrayList会添加另外11个null元素吗?

时间:2011-04-15 12:03:47

标签: java android arrays null arraylist

我正在填充一个ArrayList'pps'的Points。

对我而言,这似乎非常简单,但在此之后,arraylist中有空元素。

for(int i =0; i< currentt.getPointCount();i++){
   File pXml = new File(tourFolderPath + "point_" + (i+1) +".xml");
   if (pXml.exists()){
      pt = (Point)MXP.createObject(pXml, 2);
   }
   pts.add(pt);
}

在调试器中检查后,似乎第一次出现“pts.add(pt);”行运行它添加一个合法的点元素。但是,它还添加了10个其他null元素。

有什么想法吗?

5 个答案:

答案 0 :(得分:6)

ArrayList的初始容量为10。

答案 1 :(得分:2)

如果你通过调试器查看ArrayList,你可能会看到支持数组,而且这个数组与ArrayLists 容量一样长。

支持阵列故意拥有比当前插入元素数量更多的插槽。这样可以加快插入速度,因为它不需要为要求存储的每个元素重新分配数组。

如果你查看ArrayList的size属性,你可能会看到正确数量的元素。

答案 2 :(得分:2)

我刚在调试器中运行了一个简单的程序,你会看到每个人都在谈论的内容。 初始化它会创建10个空条目。无法访问这些空条目。 这就是尺寸显示为0的原因。 如果添加元素,则大小将更改为1。
Screenshot of ArrayList in debugger, indicating the size as 0

答案 3 :(得分:1)

pXml.exists()第一次为true,其他时间为false

即使pt不存在,也要添加pXml

请显示更多代码。

答案 4 :(得分:1)

当你创建new ArrayList();时,它会创建一个初始容量等于10的人。你可以通过将int传递给构造函数来改变这种行为。阅读更多here