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

Java 循环里怎么删除元素才安全

首先

在 Java 中,当你在循环中遍历集合时,直接删除元素可能会引发 ConcurrentModificationException。为了安全地删除元素,推荐使用 Iterator 来进行删除操作。

以下是使用 Iterator 删除元素的常见模式:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

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

        // 使用 Iterator 安全删除元素
        Iterator<Integer> iterator = list.iterator();
        while (iterator.hasNext()) {
            Integer value = iterator.next();
            if (value % 2 == 0) { // 删除偶数元素
                iterator.remove();
            }
        }

        System.out.println(list); // 输出: [1, 3]
    }
}

关键点:

  1. 使用 Iteratorremove() 方法删除元素,而不是直接使用 Listremove() 方法。
  2. for-each 循环中无法使用 Iterator.remove(),必须显式地使用 Iterator 进行遍历和删除操作。

Java 8+ 的 Stream API 方案:

你也可以使用 Stream API 来过滤出你需要的元素,间接实现删除效果:

list = list.stream()
           .filter(value -> value % 2 != 0) // 保留奇数元素
           .collect(Collectors.toList());

System.out.println(list); // 输出: [1, 3]

这种方法不会在遍历中直接删除元素,而是创建一个新的过滤后的集合。


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

相关文章:

  • 分布式 ID
  • 解决leetcode第3309题连接二进制表示可形成的最大数值
  • Linux查看下nginx及使用的配置文件
  • 6-基于TMS320C6678、FPGA XC5VSX95T的6U CPCI 8路光纤信号处理卡
  • Python 量子机器学习及其应用
  • 强大的PDF到Word转换工具
  • jmeter入门:脚本录制
  • vue 绘制平行四边形样式
  • python程序操作pdf
  • <Project-8.1.1 pdf2tx-mm> Python 调用 ChatGPT API 翻译PDF内容 历程心得
  • 【RabbitMQ高级——过期时间TTL+死信队列】
  • 毕设分享 大数据用户画像分析系统(源码分享)
  • 嵌入式数据结构中线性表的具体实现
  • 使用springCache实现缓存
  • 新媒体运营重点
  • 2_互联网概述_20241007
  • CSS响应式布局
  • Apache DolphinScheduler-1.3.9源码分析(二)
  • Go 语言应用开发:从入门到实战
  • 2024年软件设计师中级(软考中级)详细笔记【3】数据结构(下)(分值5分)