límite (largo) para la diferencia en una tubería

pulpo :

Cuál es la diferencia entre

stream.map().limit(5).terminalOperation()

y esta línea

stream.limit(5).map().terminalOperation()

las dos líneas volverán el mismo resultado, pero cuál es más optimizado y no consumir más tiempo y recursos? y por qué ? y cuántas veces el mapa se llama en cada caso?

Eran :

cuántas veces el mapa se llama en cada caso?

La respuesta depende del funcionamiento del terminal, no en el orden de mapy limit.

La operación de terminal puede consumir sólo un elemento ( findFirst()) o todos los elementos ( collect()).

De cualquier manera, el funcionamiento del terminal dicta el número de elementos en los que mapse lleva a cabo, que debe ser idéntico en ambos casos.

Por ejemplo, si usted recoge los elementos a una List, suponiendo que la Streamfuente tiene al menos 5 elementos, mapse ejecutará 5 veces para cada tubería.

Puede comprobar que mediante la adición de una printlndeclaración a la mapetapa:

List<String> list = Arrays.asList ("a","b","c","d","e","f");
list.stream().map(l->{System.out.println ("map1 " + l);return l +"44";}).limit(5).collect(Collectors.toList());
list.stream().limit(5).map(l->{System.out.println ("map2 " + l);return l +"44";}).collect(Collectors.toList());

Esta es la salida:

map1 a
map1 b
map1 c
map1 d
map1 e
map2 a
map2 b
map2 c
map2 d
map2 e

De cualquier manera, mapno se ejecuta para el elemento sexto.

En cuanto a la variante a preferir, estoy suponiendo que tendrán tiempo de funcionamiento similar, pero eso depende de la implementación real.

Supongo que te gusta

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