Java中Iterator和ListIterator的区别

在Java中,我们将首先看到Iterator与ListIterator有何不同?

Iterator 迭代器

  • Iterator是Java中引入的接口。

  • 迭代器本质上是单向的(即,仅在向前的方向上迭代或遍历元素或对象)

  • 在使用Iterator迭代元素时,我们可以执行读取和删除操作,而不能执行任何其他操作,例如添加对象,替换对象。

  • 我们可以使用iterator()Iterator接口的方法创建一个Iterator对象。

语法:

    Interface_name object_name = Collection_method. Iterator_method

示例

    Iterator itr = Set.iterator();

迭代器可以用于List、Set、Queue等,它支持集合框架的其他接口,也可以与List单独使用。

迭代器程序:

import java.util.*; 

class IteratorClass {
 public static void main(String[] args) {
  //创建一个Set接口对象
  Set set = new HashSet();

  //通过使用add()方法在集合中添加一些元素
  set.add("Java");
  set.add("Python");
  set.add("C++");
  set.add("Ruby");
  set.add("C");


  //创建Iterator接口的对象
  Iterator itr = set.iterator();

  //遍历元素的循环
  while (itr.hasNext()) {
   String str = (String) itr.next();
   if (str.equals("C"))
    itr.remove();
  }
  //Set接口的显示元素 
  System.out.println("The final list of Iterator :" + set);
 }
}

输出结果

E:\Programs>javac IteratorClass.java

E:\Programs>java IteratorClass
The final list of Iterator :[Ruby, Python, C++, Java]

在Java中,我们将首先看到ListIterator与Iterator有何不同?

ListIterator

  • ListIterator是Java中引入的Iterator的子接口。

  • ListIterator本质上是双向的(即,它在向前或向后的两个方向上迭代或遍历元素或对象)。

  • 在通过ListIterator迭代元素时,我们可以执行读取,删除,替换和添加操作,并且可以执行任何其他操作。

  • 我们可以使用listIterator()ListIterator接口的方法创建一个ListIterator对象。

语法:

    Interface_name(or class_name) object_name = Collection_method.ListIterator_method

示例

    ListIterator litr = List.listIterator();

ListIterator只能在List中使用,它不支持集合框架的其他接口,如Set,Queue等。

ListIterator程序:

import java.util.*;

class ListIteratorClass {
 public static void main(String[] args) {
  //创建一个LinkedList对象
  LinkedList ll = new LinkedList();

  //通过使用add()方法在链表中添加一些元素
  ll.add("Java");
  ll.add("Python");
  ll.add("C++");
  ll.add("Ruby");
  ll.add("C");

  //创建一个ListIterator接口的对象
  ListIterator litr = ll.listIterator();

  //遍历元素的循环
  while (litr.hasNext()) {
   String str = (String) litr.next();

   //删除元素
   if (str.equals("C"))
    litr.remove();

   //替换元素
   if (str.equals("C++"))
    litr.set("TOC");

   //添加元素
   if (str.equals("C"))
    litr.add("Data Structure");
  }

  //Set接口的显示元素 
  System.out.println("The final list of ListIterator :" + ll);
 }
}

输出结果

E:\Programs>javac ListIteratorClass.java

E:\Programs>java ListIteratorClass
The final list of ListIterator :[Java, Python, TOC, Ruby, Data Structure]