2016-03-01 4 views
-1
/** 
* Write a mehod that removes the movie with a given title 
*/ 
public void removeMovie(String title) 
{ 
    for (Movie movie : movies){ 
     if(movie.getTitle().equals(title)){ 
      movies.remove(movie); 
     } 
    } 
} 

Существует еще один класс под названием «Кино», если кому-то понадобится, чтобы он опубликовал его. Однако это исключает исключение. Зачем?Удаление объекта из исключения ArayList исключает

+1

использовать итератор –

+0

Он будет бросать 'ConcurrentModification Error', как @ScaryWombat сказал использовать итератор – 3kings

+1

Мы можем предположить, что вы получаете [' ConcurrentModificationException'] (https: //docs.oracle.com/javase/7/docs/api/java/util/ConcurrentModificationException.html), но вы всегда должны показывать точную ошибку, которую вы получаете, вместо просто «я получаю сообщение об ошибке», потому что это довольно бесполезно для нас. – Andreas

ответ

0

Вы пытаетесь удалить элемент из списка, через который вы переходите, и он будет вызывать исключение параллельной модификации. Есть несколько способов обойти это:

  • использование итератора
  • сделать список, чтобы быть удалены элементы и добавить элементы, которые вы хотите удалить с него в петлю, а затем удалить все эти элементы от него впоследствии
  • использовать для цикла не для учета каждого цикла для сдвига при удалении элемента (т.е. i--)
  • петли в обратном направлении по списку
  • вероятно другим, что я пропустил

прочитанного решения отсюда: How to avoid "ConcurrentModificationException" while removing elements from `ArrayList` while iterating it?

+0

он не позволит мне перебирать, так как ArrayList сделан из другого класса и вместо этого дает мне java.util.iterator не может быть преобразован в java.util.iterator 'это метод, который я написал :/** * Написать mehod, который снимает фильм с заданным названием */ общественного недействительными removeMovie (String название) { Итератор ITR = movies.iterator(); while (itr.hasNext()) { if (itr.next(). Equals (title)) { itr.remove(); } } } – feelingstoned

+0

Изменить Итератор Итератору :) – Hatward

+0

Duh! о чем я только думал. Хотя метод работает, он, кажется, ничего не удаляет ... У меня также есть метод под названием 'printMovies()' и он все еще печатает снятый фильм – feelingstoned

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