gpt4 book ai didi

java - 供供应商生成 IntStream 的 Lambda 表达式

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:34:14 24 4
gpt4 key购买 nike

如何用 lambda 表达式替换此处的 Supplier 代码

IntStream inStream = Stream.generate(new Supplier<Integer>() {
int x= 1;
@Override
public Integer get() {
return x++ ;
}
}).limit(10).mapToInt(t -> t.intValue());
inStream.forEach(System.out::println);

上面这段代码的输出是:

1
2
3
4
5
6
7
8
9
10

最佳答案

Stream::generate不适合这个问题。根据文档:

This is suitable for generating constant streams, streams of random elements, etc.

  • 您可能更想使用 IntStream::range :

    IntStream intStream = IntStream.range(1, 11);
    intStream.forEach(System.out::println);
  • 另一个解决方案可能是使用 IntStream.iterate您可以使用 IntUnaryOperator 舒适地控制增量:

    IntStream intStream = IntStream.iterate(1, i -> i+1).limit(10);
    intStream.forEach(System.out::println);
  • 如前所述,Stream::generate 适用于常量流或随机元素。随机元素可能是使用 Random 类获得的,因此在这里您可能希望使用 AtomicInteger 获得增量:

    AtomicInteger atomicInteger = new AtomicInteger(1);
    IntStream intStream = Stream.generate(atomicInteger::getAndIncrement).limit(10);
    intStream.forEach(System.out::println);

关于java - 供供应商生成 IntStream 的 Lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53572114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com