您的位置:首页 > 其它

使用Iterator方式对集合进行remove/add 操作

2017-04-19 11:03 344 查看
不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator
方式,如果并发操作,需要对 Iterator 对象加锁。

1.先看以下代码存在的问题

public static void main(String[] args) {
List<String> a = new ArrayList<String>();
a.add("1");
a.add("2");
for (String temp : a) {
if("1".equals(temp)){
a.remove(temp);
}
}
System.out.println(a.toString());

}

这个例子的执行结果会出乎大家的意料,那么试一下把“1”换成“2”,会是同样的结
果吗?

删除元素“1”时候,执行结果如下



删除元素“2”时,执行结果如下:



2.通过Iterator迭代的方式来解决这个问题

public static void main(String[] args) {
List<String> a = new ArrayList<String>();
a.add("1");
a.add("2");
Iterator<String> iterator = a.iterator();
while(iterator.hasNext()) {
String ele = iterator.next();
if("1".equals(ele)){
iterator.remove();
}
}
System.out.println(a.toString());
}

执行结果是正常的:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  集合remove add Iterato
相关文章推荐