У меня есть 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()
отменен? Я понимаю, что есть (многие) другие способы перебора чего-то, но я хотел бы узнать, что происходит и почему.
Как вы удалили объект? – Nick
Показать код! –
Итерации через 'ArrayList' не должны бросать« исключение nullpointer », это очарование« ArrayLists », вам не нужно беспокоиться об этом дерьме. Вы удаляете элемент в index3 или устанавливаете его на «null»? –