我是靠谱客的博主 生动酸奶,最近开发中收集的这篇文章主要介绍ArrayList删除某元素的几种方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

ArrayList删除某元素的几种方法

环境:
开发工具:IDEA
jdk:1.8

一、正序遍历:


List<Integer> list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
for (int i = 0; i < list.size(); i++) {
if(list.get(i)==2){
list.remove(i);
}
}
System.out.println("---------"+list.toString());

结果:

---------[1, 3, 4]

二、倒序遍历


List<Integer> list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
for (int i = list.size()-1; i >=0; i--) {
if(list.get(i)==2){
list.remove(i);
}
}
System.out.println("---------"+list.toString());

结果:

---------[1, 3, 4]

三、iterator遍历器


List<Integer> list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()){
if (iterator.next()==2) {
iterator.remove();
}
}
System.out.println("---------"+list.toString());

结果:

---------[1, 3, 4]

附:
不能使用foreach去遍历删除,原因:

 foreach方式遍历元素的时候,是生成iterator,然后使用iterator遍历。在生成iterator的时候,会保存一个expectedModCount参数,这个是生成iterator的时候List中修改元素的次数。
如果你在遍历过程中删除元素,List中modCount就会变化,如果这个modCount和exceptedModCount不一致, 就会抛出异常。这个是为了安全的考虑。如果使用iterator遍历过程中,
使用List修改了元素,可能会出现不正常的现象。如果使用iterator的remove方法则会正常,因为iterator的remove方法会在内部调用List的remove方法,但是会修改excepedModCount的值,因此会正常运行。

最后

以上就是生动酸奶为你收集整理的ArrayList删除某元素的几种方法的全部内容,希望文章能够帮你解决ArrayList删除某元素的几种方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部