迭代器iterator与listiterator

Iterator接口是Java Collection Frameword的成员,是对collection进行迭代的迭代器有如下三个方法:

boolean hasnext()    如果仍有元素可以迭代,则返回 true

E next()         返回迭代的元素

void remove()     从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。

所谓的迭代器返回的最后一个元素,即就是上一个iterator.next()返回的元素。

而Iterator子接口有ListIterator与XMLEventReader接口,ListIterator系列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列表中的当前位置。ListIterator 没有当前元素;它的光标位置 始终位于调用 previous() 所返回的元素和调用 next() 所返回的元素之间。长度为 n 的列表的迭代器有 n+1 个可能的指针位置。ListIterator主要多了逆向迭代的功能与set功能

ListIterator有如下一些方法

voidadd(E e)
          将指定的元素插入列表(可选操作)。
 booleanhasNext()
          以正向遍历列表时,如果列表迭代器有多个元素,则返回 true(换句话说,如果 next 返回一个元素而不是抛出异常,则返回 true)。
 booleanhasPrevious()
          如果以逆向遍历列表,列表迭代器有多个元素,则返回 true
 Enext()
          返回列表中的下一个元素。
 intnextIndex()
          返回对 next 的后续调用所返回元素的索引。
 Eprevious()
          返回列表中的前一个元素。
 intpreviousIndex()
          返回对 previous 的后续调用所返回元素的索引。
 voidremove()
          从列表中移除由 nextprevious 返回的最后一个元素(可选操作)。
 voidset(E e)
          用指定元素替换 nextprevious 返回的最后一个元素(可选操作)。

下来我们用代码进行演示

package test1;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/*
 * 关于Iterator、ListIterator
 */
public class Demo1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
			List<String> list = new ArrayList<>();
			list.add("张三");
			list.add("李四");
			list.add("王五");
			
			
			/*
			 * 第一种迭代方法
			 */
			System.out.print("从前向后迭代依次迭代----->");
			Iterator it = list.iterator();
			while(it.hasNext()){
				System.out.print(it.next()+"   ");
			}
			
			/*
			 * 第二种迭代方法
			 * 从后往前迭代
			 * 注意:list.listIterator()的定位是在第一个元素
			 */
			
			System.out.println("\n-------------------------------------");
			System.out.print("从后向前迭代------>");
			ListIterator<String> it1 = list.listIterator(list.size());
			while(it1.hasPrevious()){
				System.out.print(it1.previous()+"   ");
			}
			
			
			/*
			 * 第三种迭代方法
			 * 顺序改变
			 */
			System.out.println("\n---------------------------------");
			System.out.print("改变迭代顺序-------->");
			ListIterator<String> it2= list.listIterator(2);
			while(it2.hasPrevious()){
				System.out.print(it2.previous()+"    ");
			}
			System.out.print(it2.nextIndex()+":"+it2.next()+"  ");
			System.out.print(it2.nextIndex()+":"+it2.next()+"  ");
	}
}

以下为运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值