WEB开发网
开发学院软件开发Java 集合类库(二):LinkedList 阅读

集合类库(二):LinkedList

 2009-09-18 00:00:00 来源:WEB开发网   
核心提示: Java代码//ListIterator的使用publicclassTestDemo{publicstaticvoidmain(String[]args){List<String>list=newLinkedList<String>();list.add("ha

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

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接