600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > java list移除符合条件的元素_从List中移除指定 List 中包含的其所有元素(可选操作)。...

java list移除符合条件的元素_从List中移除指定 List 中包含的其所有元素(可选操作)。...

时间:2021-09-29 14:41:25

相关推荐

java list移除符合条件的元素_从List中移除指定 List 中包含的其所有元素(可选操作)。...

从List中移除指定 List 中包含的其所有元素,这个当然用List里面的removeAll方法了,但是有朋友说能不能不用removeAll呀

于是我就写了如下代码:

List l = ...;

List list = ....;

for(int i=0;i

String s = l.get(i);

if(list.contains(s)){

l.remove(s);

}

}

因为两个list读取的文件,运行后看着没什么错,后来无聊用了removeAll,发现结果不一样。

看代码没什么问题呀,后来经过反复实验,终于发现原来:List每remove掉一个元素以后,后面的元素都会向前移动,此时如果执行i=i+1,则刚刚移过来的元素没有被读取。

解决方法:

在remove掉一个元素后,把i减1,代码如下:

List l = ...;

List list = ....;

for(int i=0;i

String s = l.get(i);

if(list.contains(s)){

l.remove(s);

i--;

}

}

百度之后又发现另外两种方法:

1、倒过来遍历list

List l = ...;

List list = ....;

for(int i=l.length;i>=0;i--){

String s = l.get(i);

if(list.contains(s)){

l.remove(s);

}

}

2、使用iterator.remove()方法删除

List l = ...;

List list = ....;

for (Iterator it = list.iterator(); it.hasNext();) {

String s = (String)it.next();

if (list.contains(s)){

it.remove();

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。