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

Java Iterable接口中的forEach和spliterator是什么,以及如何使用链表实现,java,list,for-loop,linked-list,iterator,Java,List,For Loop,Linked List,Iterator,我有一个基本上是链表的数据结构,这意味着它有包含指向下一个节点的数据的节点 我已经研究过在这个类上使用for循环来促进迭代,我发现必须实现Iterable接口。但是,我对如何实现forEach()和spliterator()以及每个方法的作用感到困惑。您不必实现spliterator()和forEach()方法。这些方法是在Java8中引入的,它们有一个默认实现 至于他们做什么: spliterator()在该Iterable描述的元素上创建一个。Spliterator用于遍历和划分源(例如,可

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


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

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

至于他们做什么:

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

forEach(消费者操作)
Iterable
的所有元素执行操作(通过调用传递给它的
accept
方法)

其默认实现的行为类似于:

 for (T t : this)
     action.accept(t);
您只需实现
iterator()
方法,该方法返回一个
iterator


当然,您可以在中阅读所有这些内容。

这是实现拆分器的方法:

@Override
public Spliterator<A> spliterator() {
    return Spliterators.spliterator(iterator(), size(), Spliterator.ORDERED);
}
@覆盖
公共拆分器拆分器(){
返回Spliterators.spliterator(迭代器(),size(),spliterator.ORDERED);
}

文档非常深入,您遇到了哪些具体问题?显然,简单的“for”循环不需要它,但我仍然想知道它的作用。如果你能提供一个简短的概述,希望它比API文档更简短、更清晰,那就太好了。你知道Java 8吗?所以我所要做的就是有一个返回迭代器的方法?尽管你说(关于
spliterator
)“默认实现通常应该被覆盖。”这个答案并没有说明什么“每个方法都做什么。”(即使使用edit,这只是回避了问题。)链表可能无法获得更好的
spliterator()实现比默认值更高,所以你只需要跟上..t.j.CuldRe,我会说你应该考虑重写它,除非你要使用你的代码>可迭代< /COD>来创建并行流。我仍然不认为这真的说明了什么。