我在我的Android項目中爲列表的每個循環使用了一些麻煩。這個錯誤是由一個迭代器產生的(或者我最好說「錯誤是由我做的 - 不知道如何使用迭代器」^^)。列表循環遍歷以便在畫布上繪製子彈對象。當其中一顆子彈離開屏幕時,我刪除這個對象。每個Java都有問題
使用 「正常」 的for循環解決的錯誤:
for (int ii = 0; ii < bulletList_P1.size(); ii++)
bulletList_P1.get(ii).draw(canvas);
此實現帶來的錯誤:
for (Bullet bullet : bulletList_P1)
bullet.draw(canvas);
我發現THIS這裏計算器。與我的問題不同的是,在這種情況下創建了新的對象 - 我的問題是現在如何處理這種情況時,對象被刪除(從列表中刪除)。
使用一個或另一個實現的性能差異有多大?
問題其實是完全一樣的。當您使用for-each循環遍歷它時,不能在結構上修改集合。期。只要你不使用'LinkedList',性能可能是相同的。我還想指出,你的「正常」for循環有可能跳過元素。另外,你在哪裏取出子彈?在draw()中? – awksp
您可以使用'iterator'在'for-each'循環中移除元素。此問題已被解決http://stackoverflow.com/questions/6958478/modifying-a-collection-while-iterating-using-for-each-loop –
閱讀[ForLoopWorking](http://stackoverflow.com/questions/19511956/java-for-each-loop-working),以便更好地理解如何處理刪除方案,如問題的最後部分所述..... – dbw