摘要
Iterator
的作用?Iterator
和Enumeration
的区别?Iterator
和ListIterator
的区别?Iterator
和foreach
的关联?
Iterator的作用
Iterator,中文译作迭代器
,是一种检查容器内元素并遍历元素的数据类型。它能使使用者不必关心遍历元素的过程,统一了对元素的访问方式。
在JDK1.8中,Iterator接口包含下面这些方法:
//是否有下个元素
boolean hasNext();
//获取下个元素
E next();
//移除迭代器当前指向的元素,这个功能不强制实现,可以抛出UnsupportedOperationException异常
void remove();
//每个元素作为参数传递给Consumer接口的accept
void forEachRemaining(Consumer<? super E> action);
Iterator和Enumeration的区别
Iterator是JDK1.2后才出现的接口,目的是为了取代Enumeration。
Enumeration的作用和Iterator相似,它包含下面的方法:
//是否存在更多元素
boolean hasMoreElements();
//获取下一个元素
E nextElement();
Iterator:
- 简化了方法名称
- 增加了移除元素的操作
Iterator和ListIterator的区别
List接口中有一个方法listIterator()
用于返回一个List迭代器,ArrayList在内部类中实现了这个迭代器,调用listIterator()
时通过构造方法构造出一个ListIterator对象并返回。
那么Iterator和ListIterator有什么区别呢?
ListIterator是Iterator的扩充
ListIterator接口中除了继承自Iterator中的方法,还有:
//是否有上一个元素
boolean hasPrevious();
//获取上一个元素
E previous();
//下一个元素的index
int nextIndex();
//上一个元素的index
int previousIndex();
//用一个元素替换当前指向的元素
void set(E e);
//在当前位置插入一个元素
void add(E e);
Iterator
和foreach
的关联?
foreach只支持数组或实现了Iterable接口的类。
Iterable接口强制要求实现iterator()
方法,也就是说,foreach语句底层还是通过iterator的遍历实现的。
原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/%e8%b0%88%e8%b0%88java%e4%b8%ad%e7%9a%84iterator/