¿Qué sucede si llamaré a limit () después de filter () desde Stream API?

filter()Tiene ejecución perezosa. Esto significa que en realidad no hace nada bien cuando lo llamas. En cambio, solo devuelve un nuevo Streamque contendrá los elementos que coinciden con los dados Predicatecuando se atraviesa.

Dado que limit()es una operación intermedia con estado de cortocircuito , procesará el Streamhasta que alcance el límite y cortocircuitos. Esto significa que cuando llame filter, devolverá una nueva secuencia que contiene solo los elementos, cuando se atraviesa . Dado que limitsolo atraviesa lo suficiente como para alcanzar el tamaño dado filter, en efecto, solo filtrará la cantidad requerida de elementos.

Podemos probar esto lanzando una llamada a peek():

Arrays.stream(new int[] {1, 2, 2, 2, 2})
      .filter(e->  e > 1)
      .peek(System.out::println)
      .limit(3)
      .average();      

(¿Dónde average()podría haber una operación de terminal que no cortocircuite por sí sola?)

Qué salidas:

2
2
2

(Tenga en cuenta que los dos últimos no aparecen después de la llamada a filter())

Respuesta 1

¿Es posible limitar el tamaño de celda (alto / ancho) en un GridBagLayout? Quiero decir ... tengo 2 filas que tienen el mismo peso x = 0.5, pero cuando cambio el tamaño no quiero que la primera fila tenga más de 300 píxeles. ...

¿Sigue siendo TLS un requisito previo para usar HTTP / 2 en los últimos Java y Tomcat? ¿Puedo agregar <UpgradeProtocol className = "org.apache.coyote.http2.Http2Protocol" /> al puerto HTTP 8080 y esperar que HTTP / 2 ...

Estamos creando una herramienta para el análisis de tiempo de ejecución de casos promedio de los programas Java Byte Code. Una parte de esto es medir tiempos de ejecución reales. Por lo tanto, tomaríamos un método arbitrario proporcionado por el usuario que puede o puede ...

Tengo una restricción para mi sistema de producción de que todos los cambios de SQL deben ser ejecutados manualmente por un DBA por razones de seguridad. En consecuencia, quiero usar Liquibase para generar el SQL, y tener el DBA ...