1. 程式人生 > >for循環裏面不要進行remove操作,for循環裏remove元素後,list的下標會減小,導致遍歷不完全

for循環裏面不要進行remove操作,for循環裏remove元素後,list的下標會減小,導致遍歷不完全

body 代碼 2.0 class equals tostring arraylist 執行 align

【強制】不要在 foreach 循環裏進行元素的 remove/add 操作。remove 元素請使用 Iterator

方式,如果並發操作,需要對 Iterator 對象加鎖。

正例:

Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) {
String item = iterator.next(); if (刪除元素的條件) {
             iterator.remove();
          }
}

反例:

public static void main(String args[]){
        List<String> list = new ArrayList<String>();
        list.add("1");
        list.add("1");
        for (String item : list) {
            if ("1".equals(item)) { list.remove(item);
        } }
        System.out.println(list.toString());
    }
//output: [1]

for循環裏remove元素後,list的下標會減小,導致遍歷不完全。

  

說明:以上代碼的執行結果肯定會出乎大家的意料,那麽試一下把“1”換成“2”,會是同樣的 結果嗎?

for循環裏面不要進行remove操作,for循環裏remove元素後,list的下標會減小,導致遍歷不完全