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

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 提供另一个操作,对可迭代的元素的每一项运行一次。
前一个暂时还没看懂具体做什么的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值