前言
本文章帮助大家对Iterable
接口的理解。
一、概述
Iterable
意为可迭代的。顾名思义,为让(集合)对象可以用for循环进行迭代遍历所含元素,建议实现此接口。
二、源码理解
包
package java.lang;
使用Iterable
接口时,此包自动引入。
import java.util.Iterator;
Iterable
接口重点实现iterator()
以获取迭代器,其返回类型为Iterator<T>
。参考Iterator
接口。
Iterable接口
public interface Iterable<T> { /*...*/ }
使用接口时传入泛型T
,为可迭代对象的元素的类型。
Iterable方法
iterator
Iterator<T> iterator();
重点:为使实现Iterable
接口的类对象可以进行迭代遍历,那么需要实现类自定义迭代方法,即实现此方法以返回迭代器。而若要使用自定义迭代器,需实现Iterator
接口的hasNext
、next
方法。
forEach
default void forEach(Consumer<? super T> action) { /*...*/ }
遍历所有元素,对其调用action
。参考Consumer
接口。default
关键字给出默认实现。若参数为空,则抛出NullPointerException
异常。
spliterator
default Spliterator<T> spliterator() { return Spliterators.spliteratorUnknownSize(iterator(), 0); }
返回此接口覆盖的元素的未给定大小的分割迭代器,可用来遍历、分割序列。参考Spliterators.spliteratorUnknownSize
方法。default
关键字给出默认实现。
总结
新人源码理解,望大家多多指点。