2013-06-22 36 views
0

我有一個看起來像這樣一個ArrayList: 索引1:項目1 索引2:項目2 INDEX3:項目3安全地從刪除項目一個Java的ArrayList

如果我刪除了某個項目(ArrayList.remove(2)),我得到的是這樣的:

Index1: Item1 
Index2: Item2 
Index3: null 

通過這個具有for-loop迭代給我null pointer。 於是我就用ArrayList.trimToSize(),這給了我:

Index1: Item1 
Index2: Item2 

喜悅。除了loop仍然給我一個null pointer。如果我有一個try-catch圍繞着它,檢查它,它看起來像Java擴展了我的ArrayList恢復到原來的大小,完全與null

Index1: Item1 
Index2: Item2 
Index3: null 

這是怎麼回事?爲什麼我的trimToSize()被顛倒? 我明白有很多其他方法可以遍歷某些內容,但我想知道發生了什麼以及爲什麼。

+0

你是如何刪除項目? – Nick

+4

顯示一些代碼! –

+1

通過'ArrayList'迭代不應該拋出'nullpointer異常',這就是'ArrayLists'的魅力,你不必擔心那些廢話。你是否刪除index3上的元素,還是將它設置爲'null'? –

回答

2

從我看到的情況來看,您將刪除實際對象上的=null項目。那就是錯了ArrayList有自己的remove()方法,你應該使用。它會自動刪除對象並減少列表的大小。