En Java, la clase HashMap es una colección que implementa la interfaz java.util.Map. A diferencia de una lista (como por ejemplo, ArrayList), HashMap almacena los datos en forma de pares Clave-Valor aplicando la técnica de Hashing, con lo que logra mayor eficiencia. Dadas sus características, no podemos convertir un Map a List en Java directamente, sino que lo haremos sobre el conjunto de Claves o Valores.
En este artículo veremos algunas formas de extraer el listado de Claves o Valores de un HashMap para asignarlo a un ArrayList.
Convertir Map a List en Java utilizando los métodos keySet() y values()
La forma mas sencilla de convertir un map a list en Java es obteniendo el listado de Claves y/o Valores contenidos en el Map. Para poder hacer esto la clase HashMap nos provee los métodos keySet() y values().
Método | Descripción |
---|---|
keySet() | Retorna un java.util.Set con las Claves del HashMap. |
values() | Retorna una java.util.Collection con los Valores del HashMap |
En este ejemplo:
- Obtenemos la colección de Claves y/o Valores del HashMap utilizando los métodos Map.keySet() o Map.values(), según corresponda.
- En el mismo paso, instanciamos un ArrayList a partir de la colección obtenida en el paso anterior. Para esto usamos el constructor ArrayList(Collection c).
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MapToListEjemplo1 {
public static void main(String[] args) {
Map<Integer, String> ciudades = new HashMap<Integer, String>();
ciudades.put(1, "Madrid");
ciudades.put(2, "Santander");
ciudades.put(3, "Roma");
ciudades.put(4, "Venecia");
List<Integer> keys = new ArrayList<Integer>(ciudades.keySet());
List<String> values = new ArrayList<String>(ciudades.values());
System.out.println("Listado de keys:");
for(Integer i : keys) {
System.out.println("-> " + i);
}
System.out.println("Listado de values usando forEach:");
values.forEach(System.out::println);
}
}
La salida es la siguiente:
Listado de keys: -> 1 -> 2 -> 3 -> 4 Listado de values usando forEach: Madrid Santander Roma Venecia
Convertir Map a List en Java utilizando Stream API
Stream API es una de las mejoras introducidas en Java 8 y que brinda un procesamiento de datos más eficiente incluyendo procesamiento en paralelo. En este ejemplo vamos a utilizar Collectors de Java 8 para para re-empaquetar los valores de cada ítem del Map a una List.
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class MapToListEjemplo2 {
public static void main(String[] args) {
Map<Integer, String> ciudades = new HashMap<Integer, String>();
ciudades.put(1, "Madrid");
ciudades.put(2, "Santander");
ciudades.put(3, "Roma");
ciudades.put(4, "Venecia");
List<String> listado =
ciudades.values().stream().collect(Collectors.toList());
listado.forEach(System.out::println);
}
}
La salida es la siguiente:
Madrid Santander Roma Venecia
Conclusión
En este artículo hemos repasado algunas formas de pasar tanto Claves como Valores de un Map a una List, a partir de los propios métodos de la interfaz Map como utilizando Stream API. Podrás ver una breve introducción a Stream API en este artículo.
Te puede interesar
Cómo inicializar un Map en Java
En este artículo se explican diferentes formas de inicializar un java.util.Map en diferentes versiones de Java,
Palabras reservadas en Java
Las palabras reservadas en Java son un componente crucial de la sintaxis del lenguaje para formar los bloques básicos del lenguaje.