问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在遍历list的时候删除元素

发布网友 发布时间:2022-04-21 00:08

我来回答

1个回答

热心网友 时间:2022-04-18 20:49

如果是删除指定元素则如下:
ArrayList al = new ArrayList();

al.add("a");

al.add("b");

//al.add("b");

//al.add("c");

//al.add("d");

for (int i = 0; i < al.size(); i++) {

if (al.get(i) == "b") {

al.remove(i);

i--;

}

1、for循环遍历list
for(int i=0;i<list.size();i++){
if(list.get(i).equals("del"))
list.remove(i);
}

这种方式的问题在于,删除某个元素后,list的大小发生了变化,而你的索引也在变化,所以会导致你在遍历的时候漏掉某些元素。比如当你删除第1个元素后,继续根据索引访问第2个元素时,因为删除的关系后面的元素都往前移动了一位,所以实际访问的是第3个元素。因此,这种方式可以用在删除特定的一个元素时使用,但不适合循环删除多个元素时使用。

2、增强for循环
for(String x:list){
if(x.equals("del"))
list.remove(x);
}

这种方式的问题在于,删除元素后继续循环会报错误信息ConcurrentModificationException,因为元素在使用的时候发生了并发的修改,导致异常抛出。但是删除完毕马上使用break跳出,则不会触发报错。

3、iterator遍历

Iterator<String> it = list.iterator();
while(it.hasNext()){
String x = it.next();
if(x.equals("del")){
it.remove();
}
}

}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
请问哪位大哥“谨谢不敏”是什么意思? 小女子尽谢不敏什么意思 谨谢不敏是什么意思? 敬谢不敏是是什么意思? 谢不敏的意思是什么 谢不敏词语解释 什么叫“谢不敏”? 6岁儿童晚上睡眠不好怎么办 六岁孩子精神异常怎么办 小程序开发需要什么技术 没有技术如何开发小程序 java中 list怎么去除多条数据? c++问题 list随机删除如何实现? jsp中list 如何删除 指定的一项 如何在List集合中去除重复元素? Android 怎么删除list中的某一项item java List 遍历和删除 急 list可以删除么? 如何去除List集合中重复的元素 C盘里的list能删除么? 如何在list中删除我指定的对象 如何批量删除list循环出来的值? python list怎么删除一个元素 C盘有十几个list文件,可以删除吗? 如何从List集合中删除对象 如何删除list中的对象 java 怎么删除List中的指定元素 榴莲酥最简单的做法,只要几步就能搞定 榴莲酥的简介 榴莲酥怎么制作 榴莲酥的特点 list删除最后一个元素,求解释 Android 如何删除list中的某一项item 中信银行信用卡查询总欠款怎么查? 如何获取中信银行信用卡的消费记录? 中信信用卡怎么查询账单 中信银行信用卡怎么查询消费记录?提额都有啥要求? 中信银行信用卡额度六万刷卡消费到那个卡上怎么查询? 如何在中信银行查询一年之前的交易明细 中信银行信用卡短信怎么查询信用卡账单? 中信银行信用卡怎么用短信查询账单 中信银行消费账单如何查询 BIM软件培训课程有哪些 BIM培训都培训什么啊,课程内容有什么? BIM培训的课程都有什么?培训哪些内容? 中程建安教育,BIM课程培训哪些内容? 想学习BIM软件,哪个机构比较好? 哪家BIM培训机构比较好BIM软件培训课程有哪些 请问济南BIM课程培训班有哪些/BIM培训课程哪家好?? BIM培训班,BIM培训班一般学费多少 学习BIM课程/山东济南哪家好??