while(iterator.hasNext()) { String item = (String)iterator.next(); if ("1".equals(item)) { list.remove(item); } } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 可以很容易的发现两段代码的区别在于移除的元素在list中所处的位置不一样。经过对移除元素"2"的代码分析可以得知,问题的症结在于list...
1、remove 元素请使用 Iterator方式,如果并发操作,需要对Iterator对象加锁 2、解决办法? 1、remove 元素请使用 Iterator方式,如果并发操作,需要对Iterator对象加锁 // A code block List<String> a = new ArrayList<String>(); a.add("1"); a.add("2"); for (String temp : a) { if ("1".equals(...
不要在foreach循环里进行元素的remove/add操作。 remove元素请使用Iterator方式,如果并发操作,需要对Iterator对象加锁。 正例 List<String> list = new ArrayList<>(); list.add("1&q
所以不要在foreach循环里面进行元素的remove/add操作 publicIterator<E>iterator() {returnnewItr();}privateclassItrimplementsIterator<E>{intcursor;//index of next element to returnintlastRet = -1;//index of last element returned; -1 if no suchintexpectedModCount =modCount;publicbooleanhasNext() {...
不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁。 正例: Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String item = iterator.next(); ...
不要在 foreach 循环里进行元素的 remove/add 操作。 remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁。 另可参考: list.remove()时出问题,集合的remove方法注意事项1 代码语言:javascript 复制 正例: List<String>list=newArrayList<>();list.add("1");list.add("2");Iterator<String...
不要在 foreach 循环里进行元素的 remove / add 操作。 remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁。 import java.util.ArrayList;import java.util.Iterator;import java.util.List;publicclassTest{publicstaticvoidmain(String[]args){List<String>list=newArrayList<String>();list....
【强制】不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁。 步骤/ 详情 为什么会这么说呢?先来看一段代码,摘自阿里巴巴的java开发手册 、ist<String> a =newArrayList<String>(); ...
在foreach 循环里面,不能用remove方法,因为当list里面的最后一个元素被remove时候,会报错。 摘自《阿里巴巴Java开发手册》 【强制】不要在 foreach 循环里进行元素的 remove / add 操作。 remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁。
remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁。 反例: List<String>a=newArrayList<String>();a.add("1");a.add("2");for(String temp:a){if("1".equals(temp)){a.remove(temp);}}说明:这个例子的执行结果会出乎大家的意料,那么试一下把“1”换成“2”,会是同样的结...