expresión Lambda para el proveedor para generar IntStream

super estrella secreta:

¿Cómo se sustituye el Suppliercódigo aquí con la expresión lambda

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);

La salida de la pieza anterior de código es:

1
2
3
4
5
6
7
8
9
10
también:

Algo como esto si usted está obligado a utilizar Stream.generateespecíficamente:

IntStream inStream = Stream.generate(new AtomicInteger(1)::getAndIncrement)
        .limit(10)
        .mapToInt(t -> t);
inStream.forEach(System.out::println);

Editar : El usoIntStream.generate, se puede llevar a cabo como

IntStream.generate(new AtomicInteger(1)::getAndIncrement).limit(10);

Nota : Una mejor solución en términos de diseño de la API sin duda sería hacer uso deStream.iterateun caso tal uso.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=137332&siteId=1
Recomendado
Clasificación