Convertir Map a List en Java

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.

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().

Convertir Map a List en Java Claves y Valores
MétodoDescripció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,

Seguir leyendo →

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.

Seguir leyendo →