部分方法没有解释,有疑问或错误的地方,欢迎评论指出
import java.util.Iterator;
import java.util.Objects;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.function.Consumer;
/**
* 实现此接口允许对象使用 “for-each loop” 语句。增强for循环
* T 迭代器返回的元素类型
*/
public interface Iterable<T> {
/**
* 构造方法
* 返回{@code T}类型元素的迭代器。
*/
Iterator<T> iterator();
/**
* 异常抛给调用者
* 对 {@code Iterable} 的每个元素执行给定的操作 action
* Lambda表达式 —— 该forEach方法其实是一个Lambda表达式
*/
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
default Spliterator<T> spliterator() {
return Spliterators.spliteratorUnknownSize(iterator(), 0);
}
}