您的位置:首页 > 编程语言 > Java开发

源码分析-java-Iterator接口和Iterable<T>接口

2016-07-16 14:46 447 查看

Iterator接口

API文档

首先Iterator的出现是为了替代Enumeration.

它和Enumeration不同的是,它可以删除迭代的内容。并且被更好的命名

这个接口只有四个方法:

boolean hasNext()

E next()

default void remove()

default void forEachRemaining(Consumer

源码分析

default void forEachRemaining(Consumer<? super E> action) {
Objects.requireNonNull(action);
while (hasNext())
action.accept(next());
}


只有这一个方法给出了默认的实现。

简单的说就是判断下是否是Null。然后让动作接受每一个next。

当然因为remove是可选操作这里抛出了一个默认的异常。

Iterable

API文档:

这个类不同于上面的类,这个类只是为了让对象实现for-each loop声明而存在的。

这个类只有三个方法:

Iterator<T> iterator()
default Spliterator<T>  spliterator()
default void    forEach(Consumer<? super T> action)


第一个没什么好说的,生成迭代器。否则无法实现for-each

后两个是1.8版本之后更新的新方法。

foreach 提供另一个操作,对可迭代的元素的每一项运行一次。

前一个暂时还没看懂具体做什么的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iterator 迭代 文档