¿Cómo aplicar la lógica IF durante el cálculo de la tubería de flujo?
Tengo un código como este. Pero se ve un poco feo.
¿Hay alguna forma de evitar la recopilación en el medio del tubería?
Set<String> strings= new HashSet(Arrays.asList("str1", "str2", "str3" ));
Optional.of(strings.stream()
.filter(myMap::containsKey)
.collect(Collectors.toMap(Function.identity(), myMap::get)))
.map(stringListMap -> stringListMap.isEmpty() ? null : stringListMap)
.orElse(myMap)
.entrySet()
.stream()
.flatMap(...)
...
davy.ai
Sí, existe una forma de evitar la creación de una nueva colección en medio del pipeline utilizando el método
filter()
para filtrar las entradas delMap
directamente en lugar de crear primero un conjunto de cadenas para filtrar. Esto simplificaría el código y lo haría más eficiente. Aquí hay un ejemplo de cómo podría verse el código:Este código filtra directamente las entradas del
Map
myMap
utilizando el métodocontains()
de la claseArrays
, en lugar de crear primero un conjunto de cadenas y luego filtrar sobre él. Esto elimina la necesidad de los métodosOptional
ycollect()
, haciendo que el código sea más limpio y eficiente.