Tengo algo de código Java que proporciona objetos de items
. Limita basa ellos en la maxNumber
:
items.stream()
.map(this::myMapper)
.filter(item -> item != null)
.limit(maxNumber)
.collect(Collectors.toList());
Funciona correctamente, pero la pregunta es la siguiente: ¿Hay una manera de saltarse la limitación cuando el maxNumber == 0
?
Sé que podría hacer esto:
if (maxNumber == 0) {
items.stream()
.map(this::myMapper)
.filter(item -> item != null)
.collect(Collectors.toList());
} else {
items.stream()
.map(this::myMapper)
.filter(item -> item != null)
.limit(maxNumber)
.collect(Collectors.toList());
}
Pero tal vez hay una mejor manera, hace nada vienen a la mente?
Supongo que
.limit(maxNumber == 0 ? Long.MAX_VALUE : maxNumber)
hará el truco, ya que es muy probable que no se va a hacer frente a una corriente con más de 2 ^ 63-1 elementos ...
Por lo menos tener cuidado con las corrientes paralelas sobre esto ... Una nota en la documentación de la API dice:
API Nota : Si bien
limit()
es generalmente una operación barata en las tuberías de flujo secuenciales, que puede ser bastante caro en tuberías paralelas ordenados, especialmente para valores grandes de maxSize ...