recorrer implementar example entre ejemplo diferencia java map lambda java-8

implementar - ¿Cómo asignar valores en un mapa en Java 8?



map string string java (2)

Esta pregunta ya tiene una respuesta aquí:

Digamos que tengo un Map<String, Integer> . ¿Hay alguna manera fácil de obtener un Map<String, String> de él?

Por fácil, me refiero a no me gusta esto:

Map<String, String> mapped = new HashMap<>(); for(String key : originalMap.keySet()) { mapped.put(key, originalMap.get(key).toString()); }

Pero más bien un trazador de líneas como:

Map<String, String> mapped = originalMap.mapValues(v -> v.toString());

Pero obviamente no hay un método mapValues .


La forma más fácil de hacerlo es:

Map<String, Integer> map = new HashMap<>(); Map<String, String> mapped = map.entrySet().stream() .collect(Collectors.toMap(Map.Entry::getKey, entry -> String.valueOf(entry.getValue())));

Lo que haces aquí, es:

  1. Obtenga un Stream<Map.Entry<String, Integer>>
  2. Recoge los resultados en el mapa resultante:
    1. Asigna las entradas a su clave.
    2. Asigne las entradas a los nuevos valores, incorporando String.valueOf .

La razón por la que no puede hacerlo en una línea, es porque la interfaz de Map no ofrece tal, lo más cercano que puede obtener es map.replaceAll , pero ese método dicta que el tipo debe permanecer igual.


Necesita transmitir las entradas y recopilarlas en un nuevo mapa:

Map<String, String> result = map.entrySet().stream() .collect(toMap(Entry::getKey, e -> String.valueOf(e.getValue()));