Iterable 和 Iterator

Iterable 接口

Iterable 意为可迭代的、可重复的,实现 Iterable 接口的集合对象支持迭代,是可迭代。

从源代码中可以看到,Collection 接口继承了 Iterable 接口。

在 Iterable 接口中定义了三个方法:

(1)该方法返回一个 T 类型元素上的迭代器。

(2)该方法进行循环输出,对内部元素进行遍历,传递的参数是一个Consumer接口。

(3)该方法提供了一个可以并行遍历元素的迭代器,以适应现在cpu多核时代并行遍历的需求。

Iterator 接口

iterator 是迭代器,其中定义了四个方法:

(1)该方法返回一个 boolean 类型的值,来判断集合是否遍历完成,如果集合没有遍历完,返回true。

 

(2)返回集合中的下一个元素。

(3)删除集合中上一次 next() 返回的元素。

(4)参数传递一个Consumer接口对象,来遍历集合中的元素。该方法时JDK1.8之后新增的默认方法。

 

思考:Collection 接口没有直接继承 Iterator接口,而是继承了 Iterable接口,调用其中的Iterator() 返回一个类型的迭代器,进行遍历。这种做法的原因是,Iterator接口中的 hasnext() 和 next() 方法,需要在集合中保留一个标识当前位置的数据,如果集合在不同的方法中使用,对于不同的方法来说,当前位置变得不可预知,并且在Collection集合中也只能保留一个当前位置信息。但是继承了Iterable接口之后,每次调用都会产生一个新的当前位置信息,使得多个迭代器对同一个Collection集合的操作互不干扰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值