相关疑难解决方法(0)

为什么Iterable <T>不提供stream()和parallelStream()方法?

我想知道为什么Iterable界面不提供stream()parallelStream()方法.考虑以下课程:

public class Hand implements Iterable<Card> {
    private final List<Card> list = new ArrayList<>();
    private final int capacity;

    //...

    @Override
    public Iterator<Card> iterator() {
        return list.iterator();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一个Hand的实现,因为你可以在玩卡片游戏时手中拿着牌.

基本上它包装a List<Card>,确保最大容量并提供一些其他有用的功能.最好直接实现它作为一个List<Card>.

现在,为了方便起见,我认为实现它会很好Iterable<Card>,这样如果你想循环它就可以使用增强的for循环.(我的Hand班级也提供了一种get(int index)方法,因此Iterable<Card>在我看来是合理的.)

Iterable接口提供以下内容(省略javadoc):

public interface Iterable<T> {
    Iterator<T> iterator();

    default void forEach(Consumer<? super T> action) {
        Objects.requireNonNull(action);
        for (T t : this) {
            action.accept(t);
        }
    }

    default Spliterator<T> …
Run Code Online (Sandbox Code Playgroud)

java java-8

234
推荐指数
3
解决办法
3万
查看次数

了解Java 8中的Spliterator,Collector和Stream

我无法理解StreamJava 8中的接口,特别是它SpliteratorCollector接口有关的地方.我的问题是我根本就没有理解SpliteratorCollector接口,并因此在Stream界面依然有些模糊了我.

究竟什么是a Spliterator和a Collector,我该如何使用它们?如果我愿意自己编写SpliteratorCollector(也可能是我自己的编写Stream过程),我应该做什么而不是做什么?

我阅读了一些散布在网络上的例子,但由于这里的所有内容都是新的并且可能会有变化,因此示例和教程仍然非常稀少.

java lambda java-8 spliterator

135
推荐指数
4
解决办法
7万
查看次数

从数组中生成高效的Java 8排序Spliterator

在Java 8中,提供了各种方便的实用程序来从阵列构建高效的Spliterator.但是,没有提供工厂方法来构建带有比较器的Spliterator.显然,Spliterators可以附加比较器; 他们有getComparator()方法和SORTED财产.

图书馆作者如何构建SORTEDSpliterator?

java java-8 spliterator

17
推荐指数
1
解决办法
3026
查看次数

标签 统计

java ×3

java-8 ×3

spliterator ×2

lambda ×1