arraylist採用for循環刪除刪不乾淨問題

算是回顧知識吧,以前就聽老師說list遍歷列表要刪除元素要用iterator.remove(),沒怎麼注意,今天試着寫了一個方法,運行了一下發現還真是。

ArrayList<String> arrayList = new ArrayList<>();
		for (int i = 0; i < 5; i++) {
			arrayList.add(i + "");
		}
		for (int i = 0; i < arrayList.size(); i++) {
			arrayList.remove(i);
			System.out.println(arrayList.size());
		}
爲什麼刪不乾淨呢,因爲remove執行後,arraylist.size()不斷變小,導致原來下標的數據沒了(對,到其他地方去了),所以刪不乾淨。正確的做法是:

ArrayList<String> arrayList = new ArrayList<String>();
		for (int i = 0; i < 5; i++) {
			arrayList.add(i + "");
		}
		Iterator<String> it = arrayList.iterator();
		while (it.hasNext()) {
			String xString=it.next();
			it.remove();
		}
		System.out.println(arrayList.size()+"");
記錄一下。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章