相关疑难解决方法(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.util.stream.Streamable发生了什么?

早期jdk8-ea的javadoc 这样表示有一个java.util.stream.Streamable接口,它似乎有一个同样的关系Stream作为Iterable必须的Iterator.

现在好像我们被困住了Supplier<Stream>,这肯定是不一样的.

发生什么事了Streamable

java java-8 java-stream

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

标签 统计

java ×2

java-8 ×2

java-stream ×1