Reducir un HashMap HashMap a otro

Wayneio:

Comienzo de una cadena como esta:

"train, Train, bike, BIKE, car...etc"

de tipos de viajes y necesidad de devolver una HashMap<String, Integer>(), como esto:

(train, 4), (car, 6), (bike, 2)

El número indica la cantidad de veces que el tipo de viaje ha sido visto

Esto es por lo que yo tengo, el mapeo de la cadena en un mapa hash inicial de la siguiente manera:

(train, 1), (train, 1), (car, 1), (car, 1)...etc

con:

public static HashMap<String, Integer> countTravelTypes(String travelTypes) {
    return Arrays.stream(travelTypes.toLowerCase().replace(" ", "")
            .split(","))
            .map(s -> new HashMap<String, Integer>(){{put(s, 1);}})
            //The line below isn't right but it's as close as I could get
            .reduce(0, map -> map.key, Integer.sum(v))
}

¿Me pueden ayudar con la reducción de ahora, así que básicamente sumando todos los trenes para mostrar que había 4

Gracias completo Guy:

Podemos utilizar Collectors.summingInt()un mapa de salida de tipo Map<String, Integer>:

Map<String, Integer> result =  
Stream.of("train, Train, bike, BIKE, car, BIKE, Train".split(", "))
      .collect(Collectors.groupingBy(i -> i, Collectors.summingInt(i -> 1)));

Supongo que te gusta

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