遍历一个list,并删除集合中元素的几种方式

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 }

posted on 2025-04-02 10:17  德邦总管  阅读(79)  评论(0)    收藏  举报

导航