2013-06-22 2 views
0

У меня есть ArrayList, который выглядит примерно так: INDEX1: Элемент1 index2: Item2 Index3: Item3Безопасное удаление элемента из 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() который вы должны использовать. Он автоматически удаляет объект и уменьшает размер списка.