java:集合输出之Iterator和ListIterator二

java:集合输出之Iterator和ListIterator二

ListIterator是Iterator的子接口,Iterator的最大特点是,能向前,或向后迭代。如果现在要想双向输出的话,则只能使用ListIterator接口,此接口有一个要求,即只能输出List接口里面的内容。因此用到public ListIterator<E> extends Iterator<E>:

add(E e): 增加数据

boolean hasNext(); 继承Iterator ,下一个元素是否存在,

next(); 继承Iterator,获取下一个元素内容

previous();继承Iterator,获取上一个元素内容

remove();删除 下一个或上一个元素

set(E e);用指定元素替换下一个或上一个元素内容;

 

	// TODO 自动生成的方法存根
		
		List<String> allList = new ArrayList<String>();
		allList.add("A");
		allList.add("B");
		allList.add("C");
		allList.add("D");
		allList.add("E");
		
		ListIterator<String> iter =  allList.listIterator();
		System.out.println("向前输出");
		while(iter.hasNext())
		{
			//向前输出
			System.out.println(iter.next() + "、");
			
		}
		//向后输出
		System.out.println("向后输出");
		while(iter.hasPrevious())
		{
			System.out.println(iter.previous());
		}

  

 

 

输出结果:

向前输出
A、
B、
C、
D、
E、
向后输出
E
D
C
B
A

  

 

如果想要双向输出,则首先一定要保证先执行由前向后的输出操作。单独执行向后输出,是没有内容输出的。

在使用ListIterator接口的时候,还有最大一个特点,可以增加修改数据。

 

List<String> allList = new ArrayList<String>();
		allList.add("A");
		allList.add("B");
		allList.add("C");
		allList.add("D");
		allList.add("E");
		
		ListIterator<String> iter =  allList.listIterator();
		
		//增加数据,此方法只有由前向后输出才有新增加的值
		iter.add("X");
		
		System.out.println("向前输出");
		while(iter.hasNext())
		{
			//再此修改的数据,也只有由前向后输出的内容才有
			String str = iter.next();
			iter.set(str + " - drw");
			//向前输出
			System.out.print( str + "、");
			
		}
		//向后输出
		System.out.println("\n向后输出");
		while(iter.hasPrevious())
			
		{
			System.out.print(iter.previous()+"、");
		}

  结果为:

向前输出
A、B、C、D、E、
向后输出
E - drw、D - drw、C - drw、B - drw、A - drw、X、

  

posted @ 2017-09-06 08:10  穆晟铭  阅读(327)  评论(0编辑  收藏  举报