簡體   English   中英

從第一個開始到最后一個開始時出現迭代錯誤,即以正常方式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM