当前位置: 首页 > article >正文

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

一、普通for循环结合remove删除

这种方式存在缺点,就是会漏删。

当使用普通的for循环(即for (int i = 0; i < list.size(); i++))遍历List时,每次循环都会根据当前的索引i来访问列表中的特定元素。然而,在遍历过程中如果直接删除元素,会导致列表的大小发生变化,进而影响后续元素的索引。

一般会执行i--的操作,以达到避免漏删的情况。

public void listRemove()
    {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);

        for (int i = 0; i < list.size(); i++) {
            if (list.get(i) % 2 == 0) {
                list.remove(i);
                i--;
            }
        }

        System.out.println("剩余元素:" + list);
    }

二、普通for循环倒叙删除

倒叙删除主要是结合数组的特点,从尾部删除不会导致下标索引发生改变。

public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);

        for (int i = list.size() - 1; i >= 0; i--) {
            if (list.get(i) % 2 == 0) {
                list.remove(i);
            }
        }

        System.out.println("剩余元素:" + list);
    }

 三、迭代器循环

 public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);

        Iterator<Integer> iterator = list.iterator();
        while (iterator.hasNext()) {
            Integer element = iterator.next();
            if (element % 2 == 0) {
                iterator.remove();
            }
        }

        System.out.println("剩余元素:" + list);
    }

四、使用Stream流 

public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);

        // 使用 Stream 过滤出奇数元素,重新生成一个新的列表
        List<Integer> filteredList = list.stream()
               .filter(element -> element % 2!= 0)
               .collect(Collectors.toList());

        System.out.println("剩余元素:" + filteredList);
    }

五、使用removeIf

public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);

        // 使用 removeIf 删除偶数元素
        list.removeIf(element -> element % 2 == 0);

        System.out.println("剩余元素:" + list);
    }

 


http://www.kler.cn/news/356830.html

相关文章:

  • 【Linux网络编程】Socket编程--UDP(第一弹):实现客户端和服务器互相发送消息
  • 【数据结构】栈的创建
  • Redis --- 第六讲 --- 关于持久化
  • nodejs使用redis工具类示例
  • YoloV9改进策略:主干网络改进|DeBiFormer,可变形双级路由注意力|全网首发
  • stm32通过串口读取JY61 JY62数据(HAL库)
  • URP学习(一)
  • 机器学习核心功能:分类、回归、聚类与降维
  • AJAX——POST 设置请求体参数
  • IP基本原理
  • 【nlp】知识蒸馏Distilling
  • Postman发送GET、POST请求
  • 【重学 MySQL】七十二、轻松掌握视图的创建与高效查看技巧
  • 网络爬虫自动化Selenium模拟用户操作
  • Python知识点:基于Python工具,如何使用Ethereum Tester进行智能合约测试
  • python中else使用汇总
  • docker启动MySQL容器失败原因排查记录
  • 力扣 142.环形链表Ⅱ【详细解释】
  • C#的自定义对话框和提示窗体 - 开源研究系列文章
  • Shell脚本:用户和用户组管理全面指南