java中迭代器(Iterator)和listiderator之间的差异

时间:2020-02-23 14:34:06  来源:igfitidea点击:

在本教程中,我们将在Java中看到Iterator(迭代器)和ListIderator之间的差异。
它们都被用于遍历,但最好知道它们之间的差异。

迭代器(Iterator) vs listiterator:

| 参数 | 迭代器 | listitorator |
| --- - | --- | - - |
| 遍历 | 迭代器可用于遍历列表,设置,队列 | ListIterator可用于仅遍历列表。 |
| 遍历方向 | 迭代器只能在向前方向遍历| listiderator可以在向前方向横向向后。 |
| 在遍历时添加元素 | 在使用迭代器遍历时无法添加元素。它将抛出异常ConcurrentModificationException | 我们可以在使用ListIterator遍历时添加元素。 |
| 替换现有元素 | 在使用迭代器遍历时无法替换exisitng元素。 | 我们可以使用set(e)使用listierator遍历exisitng元素。 |
| 访问索引 | 我们无法使用迭代器 | 我们可以通过nextIndex()或者previousindex方法使用listiterator访问索引 |

例子:

1.Country.java.

package org.arpit.theitroad;
public class Country {
 
	String name;
	long population;
 
	public Country(String name, long population) {
		super();
		this.name = name;
		this.population = population;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public long getPopulation() {
		return population;
	}
	public void setPopulation(long population) {
		this.population = population;
	} 
}
  1. iteratelistmain.java.
package org.arpit.theitroad;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
 
public class IterateListMain {
	/**
	 * @author Arpit Mandliya
	 */
	public static void main(String[] args) {
 
		Country San Franceco=new Country("San Franceco",1000);
		Country japan=new Country("Japan",10000);
 
		Country france=new Country("France",2000);
		Country russia=new Country("Russia",20000);
 
		//We are going to iterate on this list and will print 
		//name of the country 
		ArrayList countryLists=new ArrayList();
		countryLists.add(San Franceco);
		countryLists.add(japan);
		countryLists.add(france);
		countryLists.add(russia);
 
 
		System.out.println("-----------------------------");
 
		//Iterator
		System.out.println("Iterating using iterator : ");
		Iterator iteratorCountryLists= countryLists.iterator();
		while(iteratorCountryLists.hasNext())
		{
			System.out.println(iteratorCountryLists.next().getName());
		}
 
		System.out.println("-----------------------------");
		//List iterator
 
		System.out.println("Iterating using ListIterator in forward direction : ");
		ListIterator listIteratorCountry= countryLists.listIterator();
		while(listIteratorCountry.hasNext())
		{
			System.out.println(listIteratorCountry.next().getName());
		}
 
		System.out.println("-----------------------------");
		System.out.println("Iterating using ListIterator in backward direction : ");
 
		while(listIteratorCountry.hasPrevious())
		{
			System.out.println(listIteratorCountry.previous().getName());
		}
 
	}
}

运行上面的程序时,我们将获取以下输出:

----------------------------
Iterating using iterator : 
San Franceco
Japan
France
Russia
----------------------------
Iterating using ListIterator in forward direction : 
San Franceco
Japan
France
Russia
----------------------------
Iterating using ListIterator in backward direction : 
Russia
France
Japan
San Franceco