一、使用 for 循环删除
错误操作
List<String> list = new ArrayList<>();list.add("one");list.add("two");list.add("two");list.add("three");list.add("four");for (int i = 0; i < list.size(); i++) { if (list.get(i).equals("two")) { // 由于删除后 list 内的元素整体往前移,如果没有对 i 进行处理则会出现漏删的情况 list.remove(i); }}System.out.println(list); // [one, two three, four]
正确操作
List<String> list = new ArrayList<>();list.add("one");list.add("two");list.add("two");list.add("three");list.add("four");for (int i = 0; i < list.size(); i++) { if (list.get(i).equals("two")) { list.remove(i); // 如果删除了元素,i 减 1 i --; }}System.out.println(list); // [one, three, four]
二、使用 Iterator 的 remove 方法删除
List<String> list = new ArrayList<>();list.add("one");list.add("two");list.add("two");list.add("three");list.add("four");Iterator<String> iterator = list.iterator();while (iterator.hasNext()) { if (iterator.next().equals("two")) { iterator.remove(); }}System.out.println(list); // [one, three, four]
三、使用 removeIf 方法删除
List<String> list = new ArrayList<>();list.add("one");list.add("two");list.add("two");list.add("three");list.add("four");list.removeIf(s -> s.equals("two"));System.out.println(list); // [one, three, four]