集合类库(二):LinkedList
2009-09-18 00:00:00 来源:WEB开发网Java代码
//ListIterator的使用
public class TestDemo{
public static void main(String[] args){
List<String> list=new LinkedList<String>();
list.add("haha");
list.add("yuyu");
list.add("tete");
System.out.println(list);//原链表
ListIterator it=list.listIterator();//
it.next();//跳过链表第一个数据haha后,当前元素是yuyu
it.add("jaja1");//在链表当前元素yuyu数据之前添加
it.add("jaja2");//多次添加仍然是在迭代器当然元素yuyu之前添加
System.out.println(list);
}
}
//打印结果:
[haha, yuyu, tete]
[haha, jaja1, jaja2, yuyu, tete]
(3) ListIterator并发操作同一集合的混乱
Java代码
//迭代器并发修改List
LinkedList<String> list=....;
ListIterator<String> it1=list.listIterator(); //迭代器1
ListIterator<String> it2=list.listIterator(); //迭代器2
it1.next();//跳过第一个数据,当前迭代指向第二个数据
it1.remove(); //删除当前数据之前的数据(第一个数据)
it2.next();//抛出ConcurrentModificationException异常
如果某一个迭代器在另一个迭代器修改某个集合时遍历了该集合,那么就会出现混乱。在正在迭代操作的时候,迭代器发现集合已经被其他迭代器改变,那么就会抛出ConcurrentModificationException异常。
避免的办法很简单,人工遵循一条原则:可以根据你的需要给集合附加许多迭代器,但这些迭代器只能读取列表。另外,再附加一个即能读取又能写入的迭代器。
Tags:集合 LinkedList
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接