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