首页 » Web前端 » php迭代器删除元素技巧_Java8在遍历集合时删除元素问题

php迭代器删除元素技巧_Java8在遍历集合时删除元素问题

访客 2024-10-31 0

扫一扫用手机浏览

文章目录 [+]

Java8在遍历凑集时删除元素问题

在最近事情中碰着了须要在遍历List时删除掉某些元素的情形,这时不能再利用之前一贯常用的fori或者增强for循环,会导致ConcurrentModificationException 非常。
这时候可以利用迭代器Iterator或者Java8的removeIf办理问题,这里大略解释下两种方法的大略利用及一些把稳普通for循环直接处理该问题所涌现的情形。

大略需求如下:

php迭代器删除元素技巧_Java8在遍历集合时删除元素问题

java复制代码 / 将list中和字符串"1"相同的元素去除并输出去除后的list /List<String> list = new ArrayList<>(Arrays.asList("1","1","2","3","4","5"));利用fori循环删除

java复制代码for (int i = 0; i < list.size(); i++) { if ("1".equals(list.get(i))) { list.remove(i); }}

css复制代码运行结果为:[1, 2, 3, 4, 5]

这里可以看到有一个元素 "1" 并没有被删除

php迭代器删除元素技巧_Java8在遍历集合时删除元素问题
(图片来自网络侵删)
如果利用增强for循环删除

java复制代码for (String a : list) { if ("1".equals(a)) { list.remove(a); }}

php复制代码运行结果为:Exception in thread "main" java.util.ConcurrentModificationExceptionat java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)at java.util.ArrayList$Itr.next(ArrayList.java:851)at com.lingxiao.cloudlingxiaodigitalproject9107.service.impl.Demo2.main(Demo2.java:27)通过迭代器实现

java复制代码Iterator<String> iterator = list.iterator();while (iterator.hasNext()) { if ("1".equals(iterator.next())) { iterator.remove(); }}System.out.println(list);

css复制代码运行结果为:[2, 3, 4, 5]

这里:iterator.hasNext()用来遍历,iterator.next()为元素的值,通过iterator.remove()方法去除元素

通过removeIf方法实现

java复制代码list.removeIf(a -> "1".equals(a));

这里的lambda表达式可以简写

java复制代码list.removeIf("1"::equals);

这里利用 “::” 简化了lambda表达式

css复制代码运行结果依然为:[2, 3, 4, 5]

当我们在遍历凑集时须要删除元素,须要利用迭代器或者removeIf方法

相关文章

QQ伪装黑客代码大全技术与风险警示

网络安全问题日益凸显。QQ作为一种流行的社交工具,成为了黑客攻击的主要目标之一。本文将针对QQ伪装黑客代码大全进行深入剖析,揭示其...

Web前端 2025-03-02 阅读1 评论0