关于ArrayList的remove
2016-05-07 17:44
295 查看
当我们要在一个ArrayList当中删除掉特定的几个元素的时候,在用for循环遍历ArrayList的时候是不可以删的,否则会报错,应该先得到当前list的一个iterator对象再删除,代码如下:
有时候我们必须要用for循环来遍历一个ArrayList,原因可能是需要对下标操作或其它,这个时候可以先记录下要删除的元素的下标,遍历完之后再删除。代码如下:
作个简单说明:为什么最后执行remove的时候要倒着从index最大的开始删起呢,因为ArrayList的特点就是删除后剩下的元素会保持原来的顺序,如果删除了其中一条index = 6的数据,那么index > 6 的数据的index会全部减一,也就是说删除一个元素只对此元素后面的元素的位置产生影响,这样倒着删除当然就能保证删掉的是自己想删的。还有就是千万不要忘记deleteNum.get(i) 前面的(int),我刚开始没有加这个转型,结果一条数据都不会被删掉,也不报错,原因是deleteNums.get(i)是包装类型,而remove(int
index)这个方法只认int类型。
Iterator<String> sListIterator = list.iterator(); while(sListIterator.hasNext()){ String e = sListIterator.next(); if(e.equals("anything")){ sListIterator.remove(); } }
有时候我们必须要用for循环来遍历一个ArrayList,原因可能是需要对下标操作或其它,这个时候可以先记录下要删除的元素的下标,遍历完之后再删除。代码如下:
ArrayList<Integer> deleteNums = new ArrayList<Integer>(); for (int i = 0; i < alist.size(); i++) { if (meet remove condition) { deleteNums.add(i); } } for (int i = deleteNums.size() - 1; i >= 0; i--) { alist.remove((int)deleteNums.get(i)); }
作个简单说明:为什么最后执行remove的时候要倒着从index最大的开始删起呢,因为ArrayList的特点就是删除后剩下的元素会保持原来的顺序,如果删除了其中一条index = 6的数据,那么index > 6 的数据的index会全部减一,也就是说删除一个元素只对此元素后面的元素的位置产生影响,这样倒着删除当然就能保证删掉的是自己想删的。还有就是千万不要忘记deleteNum.get(i) 前面的(int),我刚开始没有加这个转型,结果一条数据都不会被删掉,也不报错,原因是deleteNums.get(i)是包装类型,而remove(int
index)这个方法只认int类型。
相关文章推荐
- C#.Net ArrayList的使用方法
- VBS ArrayList Class vbs中的数组类
- 浅析iterator与指针的区别
- C#中Arraylist的sort函数用法实例分析
- C#中ArrayList的使用方法
- C#中Array与ArrayList用法及转换的方法
- javascript add event remove event
- 详解jQuery中的empty、remove和detach
- IE不支持option的display样式,只能使用remove和add
- java使用iterator遍历指定目录示例分享
- Java设计模式之Iterator模式介绍
- java集合迭代器Iterator中的remove陷阱
- C#生成随机ArrayList的方法
- jquery使用remove()方法删除指定class子元素
- c# ArrayList的使用方法小总结
- PHP实现C#山寨ArrayList的方法
- Lua的table库函数insert、remove、concat、sort详细介绍
- PowerShell中使用ArrayList实现数组插入、删除、添加例子
- 在JavaScript中构建ArrayList示例代码
- 【26】Python Iterator笔记