1、普通for循环结合remove删除,一般会执行i--的操作,以达到避免漏删的情况。
1 public void test1(){
2 List<Integer> list = new ArrayList<Integer>();
3 list.add(1);
4 list.add(2);
5 list.add(3);
6 list.add(4);
7 list.add(5);
8
9 for (int i = 0; i < list.size(); i++) {
10 if (list.get(i) % 2 == 0) {
11 list.remove(i);
12 i--;
13 }
14 }
15
16 System.out.println("剩余元素:" + list);
17 }
2、普通for循环倒序删除,从尾部删除不会导致下标索引发生改变。
1 public void test2(){
2 List<Integer> list = new ArrayList<>();
3 list.add(1);
4 list.add(2);
5 list.add(3);
6 list.add(4);
7 list.add(5);
8
9 for (int i = list.size() - 1; i >= 0; i--) {
10 if (list.get(i) % 2 == 0) {
11 list.remove(i);
12 }
13 }
14
15 System.out.println("剩余元素:" + list);
16 }
3、迭代器循环
1 public void test3(){
2 List<Integer> list = new ArrayList<>();
3 list.add(1);
4 list.add(2);
5 list.add(3);
6 list.add(4);
7 list.add(5);
8
9 Iterator<Integer> iterator = list.iterator();
10 while (iterator.hasNext()) {
11 Integer element = iterator.next();
12 if (element % 2 == 0) {
13 iterator.remove();
14 }
15 }
16
17 System.out.println("剩余元素:" + list);
18 }
4、使用Stream流
1 public void test4(){
2 List<Integer> list = new ArrayList<>();
3 list.add(1);
4 list.add(2);
5 list.add(3);
6 list.add(4);
7 list.add(5);
8
9 // 使用 Stream 过滤出奇数元素,重新生成一个新的列表
10 List<Integer> filteredList = list.stream()
11 .filter(element -> element % 2!= 0)
12 .collect(Collectors.toList());
13
14 System.out.println("剩余元素:" + filteredList);
15 }
5、使用removeIf
1 public void test5(){
2 List<Integer> list = new ArrayList<>();
3 list.add(1);
4 list.add(2);
5 list.add(3);
6 list.add(4);
7 list.add(5);
8
9 // 使用 removeIf 删除偶数元素
10 list.removeIf(element -> element % 2 == 0);
11
12 System.out.println("剩余元素:" + list);
13 }