Java中for循环遍历删除操作方法
在Java中,有些场景需要遍历集合中的元素,然后根据条件进行删除元素的操作。如果使用传统的for循环遍历方式来删除元素,很可能出错或发生意想不到的问题。推荐使用迭代器iterator完成
1. 推荐使用迭代器方式****删除
阿里规约:【强制】不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁。
@Test
void testList2(){
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if ("2".equals(item)) {
iterator.remove();
}
}
System.out.println(list);
}2. 尽量不要使用for循环遍历删除,否则很可能出问题。
因为删除元素后,数组元素发生前移,后续遍历可能导致
数组访问越界错误:元素减少,但是size()没有变,(可改成for里使用list.size())
有元素没遍历到
@Test
void testList(){
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
for (String item : list) {
if ("2".equals(item)) {
list.remove(item);
}
}
System.out.println(list);
}
//或
@Test
void testList2(){
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
int size = list.size();
for (int i=0; i<size; i++) {
if ("2".equals(list.gei(i))) {
list.remove(i);
}
}
System.out.println(list);
}3. 如果非要使用这种的话,可以使用倒序遍历删除,这样即使发生元素移动,不影响前面的元素
@Test
void testList3(){
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
for (int i=list.size()-1; i>=0; i--) {
if ("2".equals(list.gei(i))) {
list.remove(i);
}
}
System.out.println(list);
}到此这篇关于Java中for循环遍历删除操作的文章就介绍到这了,更多相关java for循环删除内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
使用Jackson来实现Java对象与JSON的相互转换的教程
这篇文章主要介绍了使用Jackson来实现Java对象与JSON的互相转换的教程,文中罗列了3中Jackson的使用方式,需要的朋友可以参考下2016-01-01
SpringBoot CountDownLatch多任务并行处理的实现方法
本篇文章主要介绍了SpringBoot CountDownLatch多任务并行处理的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-04-04
Java使用Curator进行ZooKeeper操作的详细教程
Apache Curator 是一个基于 ZooKeeper 的 Java 客户端库,它极大地简化了使用 ZooKeeper 的开发工作,在分布式系统中,ZooKeeper 通常被用来作为协调服务,而 Curator 则为我们提供了更简洁易用的接口,本文将介绍 Curator 的核心功能及实践样例,需要的朋友可以参考下2025-04-04


最新评论