栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否可以使用Streams.intRange函数?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否可以使用Streams.intRange函数?

实际上,JDK中再也没有这种方法了。您能获得的下一个最接近的位置是,

IntStream.range()
但是只会一步一步走。

一种解决方案是实施您自己的解决方案

Spliterator.OfInt
。例如这样的东西(很粗;可以改进!):

public final class StepRange    implements Spliterator.OfInt{    private final int start;    private final int end;    private final int step;    private int currentValue;    public StepRange(final int start, final int end, final int step)    {        this.start = start;        this.end = end;        this.step = step;        currentValue = start;    }    @Override    public OfInt trySplit()    {        return null;    }    @Override    public long estimateSize()    {        return Long.MAX_VALUE;    }    @Override    public int characteristics()    {        return Spliterator.IMMUTABLE | Spliterator.DISTINCT;    }    @Override    public boolean tryAdvance(final IntConsumer action)    {        final int nextValue = currentValue + step;        if (nextValue > end) return false;        action.accept(currentValue);        currentValue = nextValue;        return true;    }}

然后,您将使用

StreamSupport.intStream()
上面的类的实例生成流。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/392481.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号