ArrayList遍历的同时删除--- 删除还是用迭代器的比较好,其它的都会有问题.
http://javag.iteye.com/blog/403097
方法一
- ArrayList<String> list = new ArrayList<String>();
- list.add("one");
- list.add("two");
- list.add("two");
- list.add("two");
- list.add("two");
- for(int i=0;i<list.size();i++){
- if(list.get(i).equals("two")){
- list.remove(i);
- }
- }
- System.out.println(list);
结果:
- [one, two, two]
方法二
- ArrayList<String> list = new ArrayList<String>();
- list.add("one");
- list.add("two");
- list.add("two");
- list.add("two");
- list.add("two");
- for(String s:list){
- if(s.equals("two")){
- list.remove(s);
- }
- }
- System.out.println(list);
结果:
- Exception in thread "main" java.util.ConcurrentModificationException
- at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
- at java.util.AbstractList$Itr.next(AbstractList.java:343)
- at Test.main(Test.java:22)
方法三:
- ArrayList<String> list = new ArrayList<String>();
- list.add("one");
- list.add("two");
- list.add("two");
- list.add("two");
- list.add("two");
- Iterator<String> iter = list.iterator();
- while(iter.hasNext()){
- String s = iter.next();
- if(s.equals("two")){
- iter.remove();
- }
- }
- System.out.println(list);
结果:
- [one]
结论:
删除还是用迭代器的比较好,其它的都会有问题.
ArrayList遍历的同时删除--- 删除还是用迭代器的比较好,其它的都会有问题.的更多相关文章
- 【原理探究】女朋友问我ArrayList遍历时删除元素的正确姿势是什么?
简介 我们在项目开发过程中,经常会有需求需要删除ArrayList中的某个元素,而使用不正确的删除方式,就有可能抛出异常.或者在面试中,会遇到面试官询问遍历时如何正常删除元素.所以在本篇文章中,我们会 ...
- 【转】ArrayList遍历的同时删除----不错
原文网址:http://javag.iteye.com/blog/403097 方法一 ArrayList<String> list = new ArrayList<String&g ...
- 遍历List集合,删除符合条件的元素
List集合的遍历有三种方式:增强for循环,普通for循环,Iterator迭代器遍历 如果只是对集合进行遍历,以上三种循环都可正常遍历: (1)增强For循环遍历List集合 List<St ...
- Java遍历List的时候删除item
参考:http://blog.csdn.net/longyulu/article/details/8315068 在Java中有时候我们会需要对List里面的符合某种业务的数据进行删除,但是如果不了解 ...
- 遍历List过程中删除元素的正确做法(转)
遍历List过程中删除元素的正确做法 public class ListRemoveTest { 3 public static void main(String[] args) { 4 ...
- 【Java】集合(List、Set)遍历、判断、删除元素时的小陷阱
开发中,常有场景:遍历集合,依次判断是否符合条件,如符合条件则删除当前元素. 不知不觉中,有些陷阱,不知你有没有犯. 一.漏网之鱼-for循环递增下标方式遍历集合,并删除元素 如果你用for循环递增下 ...
- 对JAVA集合进行遍历删除时务必要用迭代器
java集合遍历删除的方法: 1.当然这种情况也是容易解决,实现方式就是讲遍历与移除操作分离,即在遍历的过程中,将需要移除的数据存放在另外一个集合当中,遍历结束之后,统一移除. 2.使用Iterato ...
- ArrayList在foreach正常迭代删除不报错的原因
一.背景 在以前的随笔中说道过ArrayList的foreach迭代删除的问题:ArrayList迭代过程删除问题 按照以前的说法,在ArrayList中通过foreach迭代删除会抛异常:java. ...
- STL中vector的赋值,遍历,查找,删除,自定义排序——sort,push_back,find,erase
今天学习网络编程,那个程序中利用了STL中的sort,push_back,erase,自己没有接触过,今天学习一下,写了一个简单的学习程序.编译环境是VC6.0 这个程序使用了vect ...
随机推荐
- Oracle Day07 PL/SQL基础
1.基本格式 set serveroutput on declare -- 申明部分 name ); begin -- 执行的sql语句 ; dbms_output.put_line(name); e ...
- smartGit注意点
1.xcode工程默认会创建一个.git文件,去掉勾选 2.文件夹不显示,点击smartGit导航栏上的view-->Files from Subdirectories
- HADOOP与ORACLE关联
安装Oracle和Oracle大数据连接器/OLH,尝试把HDFS中的数据文件装载到Oracle中的表 http://f.dataguru.cn/thread-460110-1-1.html 文档讲述 ...
- 模仿QQ客户端和服务器(支持window和linux)
界面部分我还没有想好,到底是用MFC还是duilib呢? 好吧我先发一个demo版本,功能都有,以下为功能展示. 先说服务器(这个有俩个版本,支持win和linux):用的数据库为MYsql(因为是便 ...
- 关于C++数组的几点讨论
数组名为何物? int main() { , , , , }; int *pnumber = number; cout << sizeof(number) << endl; c ...
- zencart 自定义函数
---------------------------------------------------------------------------------------------------- ...
- Oracle小技术集锦
- FUSE and File System
FUSE: File system in USErspace. So what is a file system? A file system maps file paths to file cont ...
- insertRule()与addRule()创建规则
要向现有的样式表中添加新规则,需要使用insertRule()方法.这个方法接受两个参数:规则文本和表示在那里插入规则的索引.下面是一个例子: sheet.insertRule("body ...
- java返回json数据日期为一串数字字符串 js 转义
var time = "2514484555"; //这只是事例,并不是实际的数据 function timeToString(time) { var datetime = new ...