Encontrar la suma de cada llave ListMultiMap

Ath ahora:

No puedo encontrar una manera simple de encontrar la suma de todas las llaves dentro de un ListMultiMap en Java.

Tengo un ListMultiMap: ListMultimap<String, Long> foodCals = ArrayListMultimap.create();

Que contiene diferentes teclas con varios valores dentro de ellos:

["19/03/2020": 77, 88, 88], ["18/03/2020": 22, 33, 21], ["17/03/2020": 77, 33, 88]

¿Cómo encontrar el total de cada clave? Y obtener una salida como: 1-253, 2-76, 3-198.

Algo como esto:

int p = 0;
for(String s : foodCals.keySet()){
    System.out.Println(p + foodCals.sumOfKey(p)) //Print the index number + the sumOfKey (sumOfKey doesn't exist).
    p++;
}

Mureinik:

No hay incorporado en función de hacerlo, pero el tratamiento de la multimap como un mapa (con asMap()) le dará una colección de los valores por día. A partir de ahí, sólo tiene que resumir ellos, por ejemplo, transmitiéndolos y su conversión a las primitivas:

int p = 0;
for (Collection<Long> vals : foodCals.asMap().values()) {
    System.out.println(p + " - " + vals.stream().mapToLong(Long::longValue).sum());
    p++;
}

EDITAR:

Para versiones anteriores de Java (antes 8), debe aplicarse la misma lógica, aunque la sintaxis es un poco clunkier, y que tendrá que sumar los valores de sí mismo:

int p = 0;
for (Collection<Long> vals : foodCals.asMap().values()) {
    long sum = 0L;
    for (Long val : vals) {
        sum += val;
    }
    System.out.println(p + " - " + sum);
    p++;
}

Supongo que te gusta

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