¿Cómo convertir HashMap a ArrayList en Java?

HashMap es parte de la colección de Java desde Java 1.2. Proporciona la implementación básica de la interfaz Map de Java. Almacena los datos en pares (Clave, Valor). A diferencia de Hashmap, se utiliza un ArrayList para proporcionarnos arrays dinámicas en Java. Es una alternativa a una array que proporciona mucha más flexibilidad en términos de almacenamiento. En este artículo, veremos cómo convertir un Hashmap en un ArrayList. 
Dado que cada elemento en el hashmap contiene un par clave/valor, no es posible almacenar este par clave/valor en una sola ArrayList. Por lo tanto, para convertir un mapa hash en una ArrayList, necesitamos mantener dos ArrayList separadas donde una ArrayList se usa para almacenar las Claves y la otra para almacenar los valores correspondientes a esas claves. Los siguientes son los diversos métodos utilizados para convertir un hashmap en ArrayList. 
 

Método 1:

Una forma de convertir es usar el constructor de ArrayList. Para hacer esto, podemos usar el método keySet() presente en HashMap. Este método devuelve el conjunto que contiene todas las claves del hashmap. Este conjunto se puede pasar a ArrayList durante la inicialización para obtener un ArrayList que contenga todas las claves. Después de obtener las claves, podemos usar el método de valores() presente en el mapa hash para obtener una colección de todos los valores presentes en el mapa hash. Podemos usar esta colección para inicializar otra array que contenga todos los valores de las claves en el hashmap.

Java

// Java program to convert a HashMap
// to an ArrayList
  
import java.util.*;
  
public class GFG {
    public static void main(String[] args)
    {
        // Create an empty hash map
        HashMap<String, Integer> map
            = new HashMap<>();
  
        // Add elements to the map
        map.put("vishal", 10);
        map.put("sachin", 30);
        map.put("vaibhav", 20);
  
        // Finding the Set of keys from
        // the HashMap
        Set<String> keySet = map.keySet();
  
        // Creating an ArrayList of keys
        // by passing the keySet
        ArrayList<String> listOfKeys
            = new ArrayList<String>(keySet);
  
        // Getting Collection of values from HashMap
        Collection<Integer> values = map.values();
  
        // Creating an ArrayList of values
        ArrayList<Integer> listOfValues
            = new ArrayList<>(values);
  
        System.out.println("The Keys of the Map are "
                           + listOfKeys);
  
        System.out.println("The Values of the Map are "
                           + listOfValues);
    }
}

Producción: 
 

The Keys of the Map are [vaibhav, vishal, sachin]
The Values of the Map are [20, 10, 30]

Nota: En el ejemplo anterior, se puede observar claramente que la correlación entre las claves y los valores es retenida por el índice de ArrayList. Esto significa que el valor de la clave específica se puede encontrar en el mismo índice en la lista de valores.

Método 2:

Otra forma de convertir un HashMap en un ArrayList es usar la API Stream para convertir las claves y los valores del mapa en las listas respectivas. 
 
 

Java

// Java program to convert a HashMap
// to an ArrayList
  
import java.util.*;
import java.util.stream.*;
  
public class GFG {
    public static void main(String[] args)
    {
        // Create an empty hash map
        HashMap<String, Integer> map
            = new HashMap<>();
  
        // Add elements to the map
        map.put("vishal", 10);
        map.put("sachin", 30);
        map.put("vaibhav", 20);
  
        // Java 8 code to convert map keys to list
        // Here, the collect() method collects the
        // stream of keys in a ArrayList.
        ArrayList<String> listOfKeys
            = map.keySet().stream().collect(
                Collectors.toCollection(ArrayList::new));
  
        // Java 8 code to convert map values to list
        ArrayList<Integer> listOfValues
            = map.values().stream().collect(
                Collectors.toCollection(ArrayList::new));
  
        System.out.println("The Keys of the Map are "
                           + listOfKeys);
  
        System.out.println("The Values of the Map are "
                           + listOfValues);
    }
}

Producción: 
 

The Keys of the Map are [vaibhav, vishal, sachin]
The Values of the Map are [20, 10, 30]

Nota: Collectors.toCollection(ArrayList::new) pasó al método collect() para recopilar como nueva ArrayList. También podemos usar toList() en lugar de esta función para convertirlo en una Lista y luego en cualquier otra implementación de Lista.&

Método 3:

En los dos métodos anteriores, HashMap se convierte en ArrayList sin conservar la relación clave/valor directa. Las claves y los valores se almacenan en dos ArrayLists diferentes. Sin embargo, podemos retener los pares clave/valor en ArrayList usando el método entrySet() . Este método se utiliza para crear un conjunto de los mismos elementos contenidos en el mapa hash. Básicamente, devuelve una vista establecida del mapa hash o podemos crear un nuevo conjunto y almacenar los elementos del mapa en ellos. Podemos pasar este Set a ArrayList usando el constructor para formar un ArrayList con los objetos Entry como pares clave/valor.

Ejemplo:

Java

// Java program to convert a HashMap
// to an ArrayList
  
import java.util.*;
import java.util.stream.*;
import java.util.Map.*;
  
public class GFG {
    public static void main(String[] args)
    {
        // Create an empty hash map
        HashMap<String, Integer> map
            = new HashMap<>();
  
        // Add elements to the map
        map.put("vishal", 10);
        map.put("sachin", 30);
        map.put("vaibhav", 20);
  
        // Set of the entries from the
        // HashMap
        Set<Map.Entry<String, Integer> > entrySet
            = map.entrySet();
  
        // Creating an ArrayList of Entry objects
        ArrayList<Map.Entry<String, Integer> > listOfEntry
            = new ArrayList<Entry<String, Integer> >(entrySet);
  
        System.out.println(listOfEntry);
    }
}

Producción: 
 

[vaibhav=20, vishal=10, sachin=30]

Publicación traducida automáticamente

Artículo escrito por KaashyapMSK y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *