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); }