我是靠谱客的博主 伶俐黄豆,最近开发中收集的这篇文章主要介绍Java List(ArrayList初始化)删除元素Java List(ArrayList初始化)删除元素,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Java List(ArrayList初始化)删除元素

概述

​ 对于使用ArrayList初始化的List对象,在进行删除元素时,可能会出现一些无法预料到的问题,就像这样一段代码:

public static void main(String[] args) {
// TODO Auto-generated method stub
List<Integer> lst = new ArrayList<Integer>();
lst.add(1);
lst.add(2);
lst.add(2);
lst.add(3);
lst.add(4);
lst.add(5);
for (int i = 0; i < lst.size(); ++i) {
if (lst.get(i) == 2) {
lst.remove(i);
}
}
for (int i = 0; i < lst.size(); ++i) {
System.out.println("lst has: " + lst.get(i));
}
}

​ 如果不了解remove的行为,可能会认为lst中将没有2这个元素了,其实不然,结果与预料的不太一样:

lst has: 1

lst has: 2

lst has: 3

lst has: 4

lst has: 5

​ 出现这个问题的原因是由于remove之后,后面的元素会往前移动,所以之后索引对应的元素就改变了,那么之后的操作也是不是在我们原先预想的对象上进行了。简单的解决办法:也可以从后往前遍历,如此,即使元素向前移动,也不会影响到原先索引对应的元素了,不过这种方法也不是很好,这里则可以使用一个更为推荐的做法。

使用List Iterator进行删除

​ 使用Iterator的好处是,remove行为操作在哪个对象上更加清晰。这里要注意,一定是要调用Iterator的remove方法,而不是List的remove方法。具体代码如下:

public static void main(String[] args) {
// TODO Auto-generated method stub
List<Integer> lst = new ArrayList<Integer>();
lst.add(1);
lst.add(2);
lst.add(2);
lst.add(3);
lst.add(4);
lst.add(5);
Iterator<Integer> it = lst.iterator();
while (it.hasNext()) {
Integer val = it.next();
if (val == 2) {
it.remove();
}
}
for (int i = 0; i < lst.size(); ++i) {
System.out.println("lst has: " + lst.get(i));
}
}

​ 相应的结果如下:

lst has: 1

lst has: 3

lst has: 4

lst has: 5

最后

以上就是伶俐黄豆为你收集整理的Java List(ArrayList初始化)删除元素Java List(ArrayList初始化)删除元素的全部内容,希望文章能够帮你解决Java List(ArrayList初始化)删除元素Java List(ArrayList初始化)删除元素所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部