2016-03-01 41 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