public static void main(String[] args) {
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4));
// 常規刪除
// list.removeIf(next -> next == 3);
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
// Integer next = iterator.next();
// 當不執行 next時會拋出 異常,原因在於,不允許刪除未讀的數據,只能刪除游標之前的數據
iterator.remove();
}
list = new ArrayList<>(Arrays.asList(1, 2, 3, 4));
// 這種方式可以刪除
for (int i = 0; i < list.size(); i++) {
Object o = (Object) list.get(0);
list.remove(o);
}
list = new ArrayList<>(Arrays.asList(1, 2, 3, 4));
// 這種方式會拋出數組越界異常
/**
* 原因在於remove作為重載方法,當數據為數字類型時,是按照索引進行刪除
*/
for (int i = 0; i < list.size(); i++) {
Integer integer = list.get(i);
list.remove(integer.intValue());
}
list = new ArrayList<>(Arrays.asList(1, 2, 3, 4));
// 錯誤方式
list.forEach(list::remove);
}