2016-03-01 35 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); 
     } 
    } 
} 

还有另一个叫做Movie的类,如果任何人需要我发布它。这引发了一个异常。为什么?从ArayList中删除对象抛出异常

+1

使用迭代器 –

+0

它会抛出一个'ConcurrentModification Error'作为@ScaryWombat说,使用迭代器 – 3kings

+1

我们可以猜测,你得到['ConcurrentModificationException'(HTTPS: //docs.oracle.com/javase/7/docs/api/java/util/ConcurrentModificationException.html),但你应该始终显示你得到的确切的错误,而不是“我得到一个错误”,因为这是对我们很无用。 – Andreas

回答

0

您试图从列表中移除一个元素,因此它会抛出一个并发修改异常。有许多方法来解决这个问题:

  • 使用迭代器
  • 使被删除元素的列表,并添加你想删除它的循环,然后删除所有这些元素的元素从它之后
  • 使用一个for循环不是每个循环
  • 可能其他人,我错过了
占转变,当你删除一个元素(即我 - )
  • 循环向后通过列表从这里个

    阅读解决方案: How to avoid "ConcurrentModificationException" while removing elements from `ArrayList` while iterating it?

  • +0

    它不会让我迭代,因为ArrayList是从另一个类制成的,而是给我'java.util.iterator 不能转换为java.util.iterator '这是我写的方法:/ ** *写一个mehod,删除给定标题的电影 */ public void removeMovie(String title) { Iterator itr = movies.iterator(); (itr.hasNext()){ if(itr.next()。equals(title)){ itr.remove(); } } } – feelingstoned

    +0

    将迭代器更改为迭代器 :) – Hatward

    +0

    呃!我在想什么?虽然该方法的工作似乎并没有删除任何东西......我也有一个名为'printMovies()'的方法,它仍然打印我删除的电影 – feelingstoned