我有一个看起来像这样的ArrayList: Index1:Item1 Index2:Item2 Index3:Item3
如果删除项目(ArrayList.remove(2))
,我会得到类似的内容:
Index1: Item1
Index2: Item2
Index3: null
使用for-loop
对此进行迭代,可以得到null pointer
。
所以我使用ArrayList.trimToSize()
,它给了我:
Index1: Item1
Index2: Item2
喜悦。除了for loop
仍然给我一个null pointer
。如果我用try-catch
包围它并检查它,看起来Java已将我的ArrayList
扩展回其原始大小,完成null
:
Index1: Item1
Index2: Item2
Index3: null
这里发生了什么?为什么我的trimToSize()
被撤销了?
我知道有(很多)其他方法来迭代某些东西,但我想知道发生了什么以及为什么。
答案 0 :(得分:2)
从我看到的内容,您将删除实际对象上=null
的项目。这是错误。 ArrayList
有一个自己的remove()
方法,您应该使用它。它会自动删除对象并减小列表的大小。