List删除元素
2018-11-27 15:19
113 查看
List删除元素
在单线程环境下的解决办法
public void remove() { if (lastRet == -1) throw new IllegalStateException(); checkForComodification(); try { AbstractList.this.remove(lastRet); if (lastRet < cursor) cursor--; lastRet = -1; expectedModCount = modCount; } catch (IndexOutOfBoundsException e) { throw new ConcurrentModificationException(); } }
在这个方法中,删除元素实际上调用的就是list.remove()方法,但是它多了一个操作:
expectedModCount = modCount;
因此,在迭代器中如果要删除元素的话,需要调用Itr类的remove方法。
将上述代码改为下面这样就不会报错了:
public class Test { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<Integer>(); list.add(2); Iterator<Integer> iterator = list.iterator(); while(iterator.hasNext()){ Integer integer = iterator.next(); if(integer==2) iterator.remove(); //注意这个地方 } } }
在多线程环境下的解决方法
List<String> myList = new CopyOnWriteArrayList<String>(); myList.add( "1"); myList.add( "2"); myList.add( "3"); myList.add( "4"); myList.add( "5"); new Thread(new Runnable() { @Override public void run() { for (String string : myList) { System.out.println("遍历集合 value = " + string); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < myList.size(); i++) { String value = myList.get(i); System.out.println("删除元素 value = " + value); if (value.equals( "3")) { myList.remove(value); i--; // 注意 } try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); --------------------- 作者:love_world_ 来源:CSDN 原文:https://blog.csdn.net/androiddevelop/article/details/21509345 版权声明:本文为博主原创文章,转载请附上博文链接!posted @ 2018-11-27 15:19 wdmiye 阅读(...) 评论(...) 编辑 收藏
相关文章推荐
- List怎么遍历删除元素
- Java循环删除List Set中的元素
- python list遍历时删除元素的推荐做法
- STL链表之删除指定元素(list)
- Java编程:删除 List 元素的三种正确方法
- c++ List 容器对象从后向前查找某元素并删除
- Java中循环删除List中元素总结
- 【数据结构_顺序表_List_1038】顺序表中重复元素的删除
- 面试题:测试给定的list,使用for,foreach,iterator删除元素的不同表现
- [置顶] C++中的list容器如何插入和删除第i个元素
- Java遍历时删除List、Set、Map中的元素(源码分析)
- LeetCode Delete Node in a Linked List (删除链表中的元素)
- 如何正确遍历删除List中的元素,你会吗?
- 【Java】List遍历时删除元素的正确方式
- Java遍历List,删除自身元素
- 探究一下:如何删除一个list的元素?
- List加入和删除元素。(在list中add时出现UnsuppotedOperationException)
- JAVA中循环删除list中元素的方法总结
- C#循环删除List中某个元素
- 对List及类似于线性表的元素 删除的顺序的考虑