1 public class Test {
2 public static void main(String[] args) {
3 List<String> list = new ArrayList<>();
4 list.add("张三");
5 list.add("张三");
6 list.add("李四");
7 list.add("李四");
8 list.add("王武");
9 list.add("王武");
10 list.add("赵六");
11 list.add("赵六");
12 list.add("侯柒");
13 list.add("侯柒");
14 System.out.println(list);
15
16 System.out.println("========迭代器删除王武=========");
17 // 迭代器删除王武 用迭代器可以删除,不能用集合来删除(报错)
18 Iterator<String> iterator = list.iterator();
19 while (iterator.hasNext()){
20 String next = iterator.next();
21 if ("王武".equals(next)){
22 // list.remove("王武");
23 iterator.remove();
24 }
25 }
26 System.out.println(list);
27 System.out.println("========foreach遍历删除赵六=========");
28
29 // foreach 遍历删除
30 // for (String s : list){ // forEach报bug
31 // if ("赵六".equals(s)){
32 // list.remove("赵六");
33 // }
34 // }
35 System.out.println(list);
36
37 // lambda 表达式 会报错
38 // System.out.println("========lambda 表达式删除李四=========");
39 // list.forEach( s -> {
40 // if ("李四".equals(s)){
41 // list.remove("李四");
42 // }
43 // });
44
45 // for循环删除张三 不报错但数据会漏删,解决方案:倒删或下标 i--
46 System.out.println("========for循环删除张三=========");
47 for (int i = 0; i < list.size(); i++) {
48 String s = list.get(i);
49 if ("张三".equals(s)){
50 list.remove("张三");
51 i--;
52 }
53 }
54 System.out.println(list);
55
56 System.out.println("========for循环倒着删除侯柒=========");
57 for (int i = list.size() - 1; i >= 0; i--) {
58 String s = list.get(i);
59 if ("侯柒".equals(s)){
60 list.remove("侯柒");
61 }
62 }
63 System.out.println(list);
64 }
65 }