设为首页   |  加入收藏夹 快速导航:  热门文章  |  最新文章  |  梦想博客  
当前位置:编程之家 -> 文章频道 ->java 
站内搜索:  

java之LinkedList操作

作者:大灰狼 来源:梦想博客 整理日期:2007-03-31
详情请见: 梦想博客

今天小试了一下LinkedList:

public static void main(String[] args)
{
LinkedList l=new LinkedList();
l.add("abc");
l.add("efg");
l.add("gogo");
l.add("error");
l.remove(3); //移除第四个元素
System.out.println(l.get(0)); //索引从0开始,得到第一个元素
System.out.println(l.get(1)); //得到第二个元素
ListIterator it=l.listIterator();

it.next();
it.add("123456"); //在第二个元素前添加一个元素
it.next();
it.add("8899"); //在第四个元素前添加一个元素



//it.previous();
while(it.hasNext())
     System.out.println(it.next());

System.out.println();
}


结果:
abc
efg
gogo

此处必须是ListIterator, Iterator没有add方法;通过previous()我们可以上移一个元素位置;

我们可以通过l.clear()来清除所有元素,而不是it.clear();

Iterator可以用remove()来移动元素,但必须先掉用next()方法;否则将出现错误:

Exception in thread "main" java.lang.IllegalStateException
    at java.util.LinkedList$ListItr.remove(LinkedList.java:590)
    at Test.main(Test.java:18)

正确方法:
Iterator it=l.iterator();
it.next();
it.remove();

而且我们不能在用一个迭代器修改某个集合时而用另一个迭代器遍历该集合,否则会出现:
Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:617)
    at java.util.LinkedList$ListItr.next(LinkedList.java:552)
    at Test.main(Test.java:27)

最好的原则就是所有迭代器都只能读取列表;