我正在填充一个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元素。
有什么想法吗?
答案 0 :(得分:6)
ArrayList
的初始容量为10。
答案 1 :(得分:2)
如果你通过调试器查看ArrayList,你可能会看到支持数组,而且这个数组与ArrayLists 容量一样长。
支持阵列故意拥有比当前插入元素数量更多的插槽。这样可以加快插入速度,因为它不需要为要求存储的每个元素重新分配数组。
如果你查看ArrayList的size
属性,你可能会看到正确数量的元素。
答案 2 :(得分:2)
我刚在调试器中运行了一个简单的程序,你会看到每个人都在谈论的内容。
初始化它会创建10个空条目。无法访问这些空条目。
这就是尺寸显示为0的原因。
如果添加元素,则大小将更改为1。
答案 3 :(得分:1)
pXml.exists()
第一次为true
,其他时间为false
。
即使pt
不存在,也要添加pXml
。
请显示更多代码。
答案 4 :(得分:1)
当你创建new ArrayList();
时,它会创建一个初始容量等于10的人。你可以通过将int传递给构造函数来改变这种行为。阅读更多here。