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)));