集合类源码之迭代器ListIterator

/**
 * @Classname ListIterator:Iterator的一个重要子接口,增加了6个方法
 * @see:为需要双向遍历数据时准备的,在后续ArrayList和LinkedList分析时会用到
 * @see:在遍历时修改List的元素
 * @see:在遍历时获取迭代器当前游标所在位置,注意长度为N的集合会有N+1个游标的位置,第一个元素位置为0,第一个游标位置为-1,在第一个元素前
 * @date 2021年7月5日 下午3:00:14
 * @Version 1.0
 */
public interface ListIterator<E> extends Iterator<E> {
//	是否还有下一个元素
	boolean hasNext();
//	返回游标后面的元素,同时游标前后一位,没有元素就报异常
	E next();
//	判断游标前面是否有元素
	E hasPrevious();
//	返回游标前面的元素,同时游标前移一位,没有元素就报异常
	E previous();
//	返回游标后边元素的索引位置,初始为0,遍历N个元素结束时为N
	int nextIndex();
//	返回游标前面元素的位置,初始时为-1,同时会报异常
	int previousIndex();
//	删除迭代器最后一次操作的元素,直接调用时会报异常
	void remove();
//	在游标前面插入一个元素
	void add(E e);
//	更新最后一次调用next()或者previous()的元素,直接调用时会报异常
	void set(E e);	
}
/**
 * ListIterator有两种获取方式:
 * 		List.listIterator()
 * 		List.listIterator(int location) 可以指定游标的所在位置
 * AbstractList作为List的直接子类,里面实现了listIterator()方法,且包含了了两个内部迭代器实现类:
 * 		ListIterator<E> listIterator()
 * 		ListIterator<E> listIterator(int location) 该方法返回的时FullListIterator(location)
 * 		class FullListIterator 该内部类继承了SimpleListIterator内部类
 * 		class SimpleListIterator 该内部类实现了Iterator接口,其主要操作如删除、添加等最后都交给了子类来实现,List
 * 		的子类ArrayList\LinkedList\vector,由于底层实现原理不同(数组,双向链表),具体操作类实现有所不同
 */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值