2013-02-11 3 views
0

У меня есть это, где каждый раз, когда Bullet достигает позиции, большей ширины экрана, ее нужно уничтожить. Когда я пытаюсь это сделать, игра падает.Удаление объекта из ArrayList в Java

«bullet» - это мой класс, который содержит объекты i как объекты.

«Пули» - мой арраист, охватывающий все объекты.

РЕДАКТИРОВАТЬ: Попытка с помощью Итератора теперь, но все еще сбой.

EDIT: Принятый ответ помог мне. Работаю сейчас. Благодаря!

public ArrayList<bullet> bullets = new ArrayList<bullet>(); 
public Iterator<bullet> it = bullets.iterator(); 

while (it.hasNext()) { 
      bullet s = it.next(); 
      if(s.xPosition > screenWidth - 10) { 
       it.remove(); 
      } 
     } 
+2

возможно дубликат [эффективного эквивалента для удаления элементов в то время как итерация Collection] (http://stackoverflow.com/questions/223918/efficient-equivalent-for-removing-elements-while-iterating-the-collection) –

+0

Что вы имеете в виду под авариями? У вас есть NullPointerException? Можете ли вы более подробно рассказать о своей ошибке? – Dimitri

+0

Обновлено выше .. –

ответ

2

Вы не можете удалить элементы из своего списка, итерации по нему. вы получите ConcurrentModificationException, если вы это сделаете. вы должны использовать итератор и удалить элементы из итератора.

Iterator<Bullet> itr = bullets.iterator(); 
while(itr.hasNext()) { 
    if(itr.next().xPosition > screenWidth - 10) { 
     itr.remove(i); 
    } 
} 
+0

Ну, это круто и все, но это не очень помогло мне, так как я не знаю, как сделать один из них. –

+0

@KevinJensenPetersen проверять дубликат, размещенный как комментарий по вашему вопросу. – PermGenError

+0

Обновлено выше .. –

Смежные вопросы