转:
java编程:List的remove()方法的三种正确打开方式!
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
方法一:
倒序循环,因为list删除只会导致当前元素之后的元素位置发生改变,所以采用倒序可以保证前面的元素没有变化;
for(int i=list.size()-1;i>=0;i--){ list.remove(i); }
- 1
- 2
- 3
- 4
方法二:
顺序循环时,删除当前位置的值,下一个值就会补到当前位置,所以需要执行i–操作;
for (int i=0; i<list.size(); i++) { if (list.get(i) == 3) { list.remove(i); i--; } }
- 1
- 2
- 3
- 4
- 5
- 6
方法三:
注意必须用迭代器的remove()方法,不要用list的remove,不然会发生java.util.ConcurrentModificationException 异常,此异常的解决方式在另一篇博客里有。
if (null != list && list.size() > 0) { Iterator it = list.iterator(); while(it.hasNext()){ Student stu = (Student)it.next(); if (stu.getStudentId() == studentId) { it.remove(); //移除该对象 } } }