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

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.lryc.cn/news/457639.html

相关文章:

  • LabVIEW晶体振荡器自动化测试系统
  • 3.6.xx版本SpringBoot创建基于Swagger接口文档
  • Oracle 12201非PDBS模式单机部署(静默安装)
  • Python 源码编译安装详解:跨平台指南及完整步骤解析
  • MQTT vs HTTP:谁更适合物联网?
  • 小北的技术博客:探索华为昇腾CANN训练营与AI技术创新——Ascend C算子开发能力认证考试(初级)
  • 鸿蒙next开发者第一课02.DevEcoStudio的使用-习题
  • 【vue】监听table水平滚动条切换tab后还原位置
  • C#使用PdfSharp生成PDF文件实例详解
  • 【软件系统架构设计师-案例-1】架构风格
  • 神经网络整体架构
  • 山西农业大学20241010
  • 小北的技术博客:探索华为昇腾CANN训练营与AI技术创新——Ascend C算子开发能力认证考试(中级)
  • Docker极速入门一文通
  • Unity网络开发基础 —— 实践小项目
  • 四、Spring Boot集成Spring Security之认证流程
  • Chromium 中chrome.bookmarks扩展接口c++实现
  • 编程思想:编程范式:响应式编程
  • Leetcode 颜色分类
  • ssh连接阿里云长连接
  • 栈的C实现
  • 【MySQL】入门篇—数据库基础:关系数据库概念
  • 不到千元的自动猫砂盆是智商税吗?这四大选购技巧不看就亏大了
  • 【图论】(二)图论基础与路径问题
  • Git常用命令(持续更新中)
  • 什么是PLM系统?PLM系统对制造业起到哪些作用?三品PLM系统对汽车制造业意义
  • Pr 视频效果:元数据和时间码刻录
  • 前端MD5加密
  • 仿IOS桌面悬浮球(支持拖拽、自动吸附、自动改变透明度与点击、兼容PC端与移动端)
  • 智谱开放平台API调用解析