Iterable

作者: 天堂挽歌 | 来源:发表于2019-07-31 00:30 被阅读0次
package java.lang;

import java.util.Iterator;
import java.util.Objects;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.function.Consumer;

/**
 * 实现这个接口的对象可以作为"for-each"语句的循环目标. 查看
 * <strong>
 * <a href="{@docRoot}/../technotes/guides/language/foreach.html">For-each Loop</a>
 * </strong>
 *
 * @param <T> 迭代器将返回此类型的元素
 *
 * @since 1.5
 * @jls 14.14.2 增强的for语句
 */
public interface Iterable<T> {
    /**
     * 返回元素类型为{@code T}的迭代器.
     *
     * @return 一个Iterator.
     */
    Iterator<T> iterator();

    /**
     * 对{@code Iterable}的每个元素执行给与的action,直到全部元素
     * 处理完成或action抛出了一个异常。除非实现类制定了不同的方
     * 式,否则action将按照迭代顺序执行(如果指定了迭代顺序)。
     * 并在异常传递到action的调用者时抛出异常
     *
     * @implSpec
     * <p>默认实现的行为像是这样:
     * <pre>{@code
     *     for (T t : this)
     *         action.accept(t);
     * }</pre>
     *
     * @param action 这个action将随每一个元素被调用
     * @throws NullPointerException 如果指定的action参数为空时
     * @since 1.8
     */
    default void forEach(Consumer<? super T> action) {
        Objects.requireNonNull(action);
        for (T t : this) {
            action.accept(t);
        }
    }

    /**
     * 使用{@code Iterable}对象创建{@link Spliterator}
     *
     * @implSpec
     * 使用可迭代的迭代器创建一个<em><a href="Spliterator.html#binding">early-binding</a></em>
     * spliterator对象.  这个spliterator对象从迭代器中继承了<em>快速失败</em>特性
     *
     * @implNote
     * 这个默认的实现通常应该被重写,默认实现所返回的spliterator对象缺乏并
     * 发性、未知大小并且没有展示任何sqlisterator特性。实现类通常总会提供很好的实现。
     *
     * @return 一个使用当前对象声明的 {@code Spliterator}对象
     * @since 1.8
     */
    default Spliterator<T> spliterator() {
        return Spliterators.spliteratorUnknownSize(iterator(), 0);
    }

相关文章

  • dart Iterable、Stream

    Iterable迭代器 Iterable.empty()创建空Iterable。const factory Ite...

  • Generator and coroutine in pytho

    Iterable objects Iterable is a category of objects which ...

  • Java中迭代器的实现

    //首先,你的自定义类要实现Iterable接口(java.long.Iterable)① //Iterable接...

  • iterable

    iterable类型:Array Map Set 遍历Array可以采用下标循环,遍历Map和Set就无法使用下标...

  • iterable

    遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。为了统一集合类型,ES6标准引入了新的itera...

  • Iterable

  • Iterable

    改进版的迭代器

  • Iterables

    https://javascript.info/iterable 什么是 iterable for...of 如何...

  • Yealink Python岗笔试

    快速排序 Python基础 all(iterable) and any(iterable)all(x)如果all(...

  • [JavaScript] for ... of

    1. for ... of for ... of语句可用于迭代iterable对象。 所谓iterable对象,指...

网友评论

      本文标题:Iterable

      本文链接:https://www.haomeiwen.com/subject/ogkarctx.html