java 8 stream中的Spliterator简介

简介

Spliterator是在java 8引入的一个接口,它通常和stream一起使用,用来遍历和分割序列。

只要用到stream的地方都需要Spliterator,比如List,Collection,IO channel等等。

我们先看一下Collection中stream方法的定义:

default Stream stream() {
        return StreamSupport.stream(spliterator(), false);
    }

default Stream parallelStream() {
        return StreamSupport.stream(spliterator(), true);
    }

我们可以看到,不管是并行stream还是非并行stream,都是通过StreamSupport来构造的,并且都需要传入一个spliterator的参数。

好了,我们知道了spliterator是做什么的之后,看一下它的具体结构:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dyWEtYS5-1651313630717)(https://upload-images.jianshu.io/upload_images/27988066-d1d4ab769240d0b1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

spliterator有四个必须实现的方法,我们接下来进行详细的讲解。

tryAdvance

tryAdvance就是对stream中的元素进行处理

你可能感兴趣的:(java,开发语言,面试)