使用Iterator方式对集合进行remove/add 操作
2017-04-19 11:03
344 查看
不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator
方式,如果并发操作,需要对 Iterator 对象加锁。
这个例子的执行结果会出乎大家的意料,那么试一下把“1”换成“2”,会是同样的结
果吗?
删除元素“1”时候,执行结果如下
删除元素“2”时,执行结果如下:
执行结果是正常的:
方式,如果并发操作,需要对 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()); }
执行结果是正常的:
相关文章推荐
- 不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁
- list,set等集合遍历时,不能remove集合中的元素。需要new一个Object或者list,set,里面add需要删除的元素,等集合遍历完了进行remove(Object)或者removeAll(list/set)操作
- 集合操作的ConcurrentModificationException异常分析,为什么有时候循环remove不会异常?Iterator方式也会异常吗?
- 不要在foreach 循环里进行集合元素的 remove/add 操作
- 使用jQuery操作DOM(attr/html/text/addClass/removeAttr/removeClass/append/before/after/clone/replacewith/)
- Java_集合操作_集合运算时使用更优雅的方式
- java.util.ConcurrentModificationException的解决办法 大家应该都知道, 在java中, 在对一些集合迭代的过程中对集合进行一些修改的操作, 比如说add,re
- Ajax使用JSON将对象、集合传递给后台的方式(用于同时对多个对象进行修改)
- 使用ArrayList集合,对其添加100个不同的元素: 1.使用add()方法将元素添加到ArrayList集合对象中; 2.调用集合的iterator()方法获得Iterator对象,并调用Ite
- 使用Volley StringRequest Get的方式进行发票查询操作
- 作业: 一.使用泛型版的ArrayList集合,对其添加100个不同的整数: 1.使用add()方法将100个整数添加到ArrayList集合中; 2.调用集合的iterator()方法获得Itera
- 不要在 foreach 循环里进行元素的 remove / add 操作
- 在对List集合进行remove()等操作重写equals()和hashCode()方法的必要性
- Java的jdbc使用addBatch进行批处理操作的几种方式
- 练习使用struts中的iterator标签对集合进行迭代
- 迭代(遍历)时候不可以使用集合的remove和add方法,但可使用Java迭代器的remove和add方法
- 如何正确使用并行计算对集合进行写操作?
- 使用面向对象的方式模拟TOM使用ATM进行存取款的操作
- Java的jdbc使用addBatch进行批处理操作的几种方式
- 使用ArrayList集合,对其添加100个不同的元素: 1.使用add()方法将元素添加到ArrayList集合对象中; 2.调用集合的iterator()方法获得Iterator对象,并调用Ite