¿Cuál es la diferencia entre clasificador y aguas abajo y solo usando clasificador

En tus dos ejemplos

.collect(groupingBy(Dish::getType));
.collect(groupingBy(Dish::getType, mapping(Dish::getName, toList())));

valor de retorno igual porque su toString()método en Dishclase namesolo devuelve . Intenta agregar más información a toString()mehtod y verás la diferencia.

En general, usar groupingBysolo un clasificador permite agrupar objetos, como en su primer ejemplo. Pero usarlo goupingBycon clasificador y en sentido descendente le permite agrupar mucho más que solo sus objetos. Por ejemplo, puede agrupar las calorías promedio por tipo :

.collect(groupingBy(Dish::getType, averagingInt(Dish::getCalories));  // Map<Type, Double>

O encuentre el plato más calórico de cada tipo :

.collect(groupingBy(Dish::getType, maxBy(Comparator.comparingInt(Dish::getCalories)));  // Map<Type, Optional<Dish>>

A menudo groupingByse usa como un flujo descendente en sí mismo para la agrupación doble (por tipo y si es vegetariano):

.collect(groupingBy(Dish::getType, groupingBy(Dish::isVegetarian)); // Map<Type, Map<Boolean, List<Dish>>>
Respuesta 1

Si esta es la pregunta

Porque tanto el código arroja los mismos resultados. Uno usa return groupingBy (clasificador, toList ()); y devolver groupingBy (clasificador, HashMap :: new, downstream); ?

groupingBy (clasificador de funciones, recopilador en sentido descendente)

No hay garantías sobre el tipo, mutabilidad, serialización o seguridad de subprocesos del Mapa devuelto.

groupingBy (clasificador de funciones, proveedor mapFactory, recopilador en sentido descendente)

El mapa producido por el recopilador se crea con la función de fábrica suministrada.

La única diferencia es que cuando se utiliza groupingBycon mapFactorylo Mapcreado se basa en la lógica de su proveedor (puede ser personalizado, inmutable, sincronizado, etc.)

Respuesta: 2

Tengo la siguiente biblioteca compartida JNI ubicada en / data / subv / Mem, he configurado LD_LIBRARY_PATH en: LD_LIBRARY_PATH = / data / subv / Mem que contiene dos archivos: bmemBridgelib.so y memBridgelib ...

¿Cómo obtener valores RGB usando JMagick (un contenedor de imagemagick)?

En el pasado, un código similar como el siguiente funcionaba bien para obtener solo uno o dos tipos de cambio de los datos XML del banco, sin aplicar la sobrecarga de un analizador XML. Pero ahora los personajes leen ...

Tengo un código en Java con Eclipse y me gustaría implementarlo en entornos Unix. El programa es un programa de consola simple que solo toma algunos argumentos en el tiempo de ejecución, lee un archivo e imprime ...