什么是Iterable接口中的forEach和spliterator,以及如何使用链表实现



我有一个数据结构,它本质上是一个链表,这意味着它的节点包含指向下一个节点的数据。

我研究了在这个类上使用for循环来促进迭代,我发现必须实现Iterable接口。但是,我对如何实现forEach()和spliterator()以及每个方法的作用感到困惑。

您不必实现spliterator()forEach()方法。这些方法是在Java 8中引入的,它们有一个默认实现。

至于他们做什么:

spliterator()在这个Iterable描述的元素上创建一个Spliterator。Spliterator用于遍历和划分源(例如,可以是Collection)的元素。它在Java 8中用于创建对象的并行流,这将允许您并行地对Iterable的项执行操作。

forEach(Consumer action)Iterable的所有元素执行一个操作(通过调用传递给它的Consumer的accept方法)。

其默认实现行为如下:

 for (T t : this)
     action.accept(t);

你只需要实现iterator()方法,它返回一个Iterator

当然你可以在Iterable的JavaDoc中读到这些

这是如何实现spliterator:

@Override
public Spliterator<A> spliterator() {
    return Spliterators.spliterator(iterator(), size(), Spliterator.ORDERED);
}

相关内容

  • 没有找到相关文章

最新更新