详情请见:
梦想博客今天小试了一下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)
最好的原则就是
所有迭代器都只能读取列表;