java集合迭代器Iterator中的remove陷阱
package TestList;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.TreeSet;
public class TestIterator {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
Iterator t = list.iterator();
while(t.hasNext()){
if(t.next().equals("bbb")){ //使用iterator遍历list集合时,如果想要删除任一集合内元素,必须要在正好遍历倒数第二个元素的时候去删除
list.remove("ccc");
}
}
TreeSet<String> set = new TreeSet<String>();
set.add("ddd");
set.add("eee");
set.add("fff");
Iterator t1 = set.iterator();
while(t1.hasNext()){
if(t1.next().equals("fff")){ //使用iterator遍历set集合时,如果想要删除任一集合内元素,必须要在正好遍历倒数第一个元素的时候去删除
set.remove("eee");
}
}
}
}
由于List,Set在实现Iterator时存在一定的差异,因此导致了List,Set在迭代的同时删除集合元素的会有不同的表现
您可能感兴趣的文章:
- 浅析iterator与指针的区别
- javascript add event remove event
- 详解jQuery中的empty、remove和detach
- IE不支持option的display样式,只能使用remove和add
- java使用iterator遍历指定目录示例分享
- Java设计模式之Iterator模式介绍
- jquery使用remove()方法删除指定class子元素
- Lua的table库函数insert、remove、concat、sort详细介绍
- MongoDB Remove函数的3个常见用法
- jquery之empty()与remove()区别说明
- ASP.NET之Response.Cookies.Remove 无法删除COOKIE的原因
- Datatable删除行的Delete和Remove方法的区别介绍
- 深入解读JavaScript中的Iterator和for-of循环
- jQuery中remove()方法用法实例
- 使用Enumeration和Iterator遍历集合类详解
- iterator 标签的使用
- notes on python
- 详解jQuery中的empty、remove和detach
- iterator (迭代器)的应用的用法(一)
- Java学习之Iterator(迭代器)的一般用法