一、使用 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]