Convertir Map a List en Java

Rate this post

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

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 →