[英]Iteration error when started from 1st one to last one i.e in normal way
@Override
public boolean onTouchEvent(MotionEvent event)
{
if (System.currentTimeMillis() - lastClick > 300)
{
lastClick = System.currentTimeMillis();
synchronized (getHolder()) {
for (int i = sprites.size() - 1; i >= 0; i--) <-------why in reverse?
{
Sprite sprite = sprites.get(i);
if (sprite.isCollition(event.getX(), event.getY()))
{
sprites.remove(sprite);
break;
}
}
}
但是,當我從lastone迭代到firstone時,即以相反的順序,它會給出結果。為什么..? 需要幫忙
這是因為要在for循環中刪除精靈。 向前移動時,如果更改循環中的對象數,則會填充迭代。 當您刪除當前元素時,在列表中找到的該元素之后的所有元素(並且仍要進行枚舉)現在都下移一個索引,即位於索引i+1
處的元素現在位於索引i
。
如果要從循環中刪除,則正確的方法是像發現的那樣反向進行迭代。 這樣,當您刪除當前元素時,所有其他仍要枚舉的元素仍位於同一索引處。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.