2017-09-13 52 views
2

我試圖使用remove方法,但我正在逐漸搞砸了,因爲我不斷收到錯誤的:remove方法拋出錯誤列表界面迭代

List<String> list1 = new ArrayList<String>(); 
     list1.add("Apple"); 
     list1.add("Bus"); 
     list1.add("Cat"); 
     list1.add("Dog"); 
     String ne = list1.listIterator().next(); 
System.out.println(ne); 
list1.listIterator().remove(); 

刪除語句拋出一個錯誤?誰能告訴我爲什麼? 同樣的事情,當我只使用迭代器代替listIterator?

+0

的問題是,你得到一個新的ListIterator對象,當你做'list1.listIterator()'第二次。而'.remove()'只會在'.next()'或者'.previous()'調用後才起作用。通過分配一個變量來重新使用第一個「ListIterator」。 – kaza

回答

3

您的代碼是正確的,因爲您可以每次調用ListIterator#remove()一次next()(請參閱Javadoc)。但是,在您的代碼中,實際上您正在調用remove()上的新的列表迭代器,而不是您之前使用的那個。試試下面的代碼,並希望這將是你沒有明確自己做錯了什麼:

List<String> list1 = new ArrayList<String>(); 
list1.add("Apple"); 
list1.add("Bus"); 
list1.add("Cat"); 
list1.add("Dog"); 
// retain a reference to the same list iterator 
ListIterator<String> list1itr = list1.listIterator(); 
String ne = list1itr.next(); 
System.out.println(ne); 
list1itr.remove(); 

Demo

+0

試過,但現在我越來越無法找到listIterator的符號,只是爲了確保我也輸入了它! – user7703770

+0

@ user7703770我認爲它應該已經可用,如果沒有,'ListIterator'是'java.util'包的一部分。 –

+0

這就是爲什麼我感到困惑,因爲它說 AVA:12:錯誤:找不到符號 ListIterator list1itr = list1.listIterator(); 我們必須做新的或第一次使用它? – user7703770