簡體   English   中英

刪除對象時ArrayList中的索引超出范圍異常

[英]Index Out Of Bounds Exception in ArrayList while removing objects

平台:JCreator

我通常使用從背面開始計數的循環,因為從理論上講,在刪除循環時它們應該合攏:

0123456789

刪除偶數:

i = 9: 0123456789
i = 8 //remove 8: 012345679
i = 7: 012345679
i = 6 //remove 6: 01234579

等等

但是當對象被刪除時,我得到這個異常:

線程“ AWT-EventQueue-0”中的異常java.lang.IndexOutOfBoundsException:索引:3,大小:3

for (int i = dArea.size() - 1; i >= 0; i--) {
    if (dArea.get(i).getOwn() == 1) {
        if (dArea.get(i).getSK() == 2) {
            if (dArea.get(i).getX() - dArea.get(i).getW() / 2 > 1350) {
                dArea.remove(i);
            }
            if (dArea.get(i).getX() + dArea.get(i).getW() / 2 < 0) {
                dArea.remove(i);
            }
            if (dArea.get(i).getY() - dArea.get(i).getH() / 2 > 685) {
                dArea.remove(i);
            }
            if (dArea.get(i).getY() + dArea.get(i).getH() / 2 < 0) {
                dArea.remove(i);
            }
        }
    }
}

任何想法為什么以及如何解決?

嘗試使用else if代替if

否則,循環中的一次迭代可能會刪除多個元素(一次用於“ w”檢查,一次用於“ h”檢查)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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