Java中的Iterator和ListIterator之间的区别

Java提供了这两个接口来逐个遍历存储在集合中的数据。迭代器和列表迭代器的内部实现使它们彼此不同,但是两个迭代器的主要议程是相同的。

以下是迭代器和List迭代器之间的重要区别。

序号迭代器List迭代器
1适用于迭代器可用于遍历任何集合,而与集合的类型无关。列表迭代器只能用于仅迭代列表集合实现的类,例如arraylist,linkedlist等。
2呼唤如前 ,必须使用迭代器枚举所有Collections实现的接口中的元素,如Set,List,Queue,Deque以及Map接口的所有实现的类。可以通过调用迭代器()Collection接口的方法来创建迭代器对象。另一方面,当我们要枚举List的元素时必须使用List迭代器.List迭代器的对象可以通过调用list迭代器()List接口中存在的方法来创建。
3数据遍历在迭代器的情况下,数据只能在一个方向上遍历,因为迭代器只能在向前方向上遍历列表迭代器可以在正反两个方向上遍历,这使得数据可以在两个方向上遍历。
4删除中在迭代器的情况下,不允许删除元素。List迭代器可以替换列表集合中的元素。
5加成在迭代器的情况下,不允许添加元素,因为它会引发ConcurrentModificationException。List迭代器可以随时轻松地在列表集合中添加元素。
6修改在迭代器的情况下,不允许修改元素,因为它会引发ConcurrentModificationException。List迭代器可以通过调用set()方法随时轻松地修改列表集合中的元素。
7元素索引使用迭代器时,无法获取集合中遍历的元素的索引。List迭代器具有类似nextIndex()和方法,previousIndex()可在遍历List时随时获取元素的索引。

迭代器与List迭代器的示例

JavaTester.java

import java.io.*;
import java.util.*;
public class JavaTester {
   public static void main(String[] args){
      ArrayList<Integer> list = new ArrayList<Integer>();
      list.add(1);
      list.add(2);
      list.add(3);
      list.add(4);
      list.add(5);
      //迭代器
      迭代器 itr = list.迭代器();
      System.out.println("迭代器 traversal:");
      while (itr.hasNext())
      System.out.print(itr.next() + " ");
      System.out.println();
      // List迭代器
      List迭代器 i = list.list迭代器();
      System.out.println("List迭代器 Forward traversal:");
      while (i.hasNext()){
         System.out.print(i.next() + " ");
         System.out.println();
         System.out.println("List迭代器 Backward traversal : ");
      }
      while (i.hasPrevious()){
         System.out.print(i.previous() + " ");
         System.out.println();
      }
   }
}

输出结果

迭代器 traversal:
1 2 3 4 5
List迭代器 Forward traversal:
1
List迭代器 Backward traversal :
2
List迭代器 Backward traversal :
3
List迭代器 Backward traversal :
4
List迭代器 Backward traversal :
5
List迭代器 Backward traversal :
5
4
3
2
1