Conversión de Java Maps a Lista

Un mapa es un objeto que asigna claves a valores o es una colección de pares de atributos y valores. La lista es una colección ordenada de objetos y la Lista puede contener valores duplicados. El Mapa tiene dos valores (una clave y un valor), mientras que una Lista solo tiene un valor (un elemento). Entonces podemos generar dos listas como se enumeran:

  • Lista de valores y
  • Lista de claves de un Mapa.

Supongamos que » mapa» es la instancia de Mapa, de ahora en adelante, como de costumbre, todos sabemos que contiene pares de conjuntos y valores. por lo que se definen de la siguiente manera: 

  • map.values() devolverá una colección de los valores del mapa.
  • map.keySet() devolverá un conjunto de claves del mapa.

Métodos:

  1. Pasar conjuntos de claves dentro del parámetro del constructor ArrayList
  2. Pasar la colección de valores de mapa generados por el método map.values() al parámetro del constructor ArrayList
  3. Usando Streams API (solo aplicable después de JDK 8 y en adelante)

Discutamos cada uno de ellos

Métodos 1: pasar conjuntos de claves dentro del parámetro del constructor ArrayList

Procedimiento: podemos convertir claves de mapa en lista de claves sin pasar por el conjunto de claves de mapa generadas por el método map.keySet() al parámetro del constructor ArrayList como se muestra a continuación

map.values(); // Now here e will pass sets of keys of our map, so it becomes
map.values(map.keySet());  // Now we just need to store it into List, so creating object 
List ListofKeys = new ArrayList(map.keySet()); // Now we are done with conversion. 

Sintaxis: De ahora en adelante es como sigue:

List ListofKeys = new ArrayList(map.keySet());

Método 2: List ListofKeys = new ArrayList(map.keySet());

Podemos convertir claves de mapa en una lista de valores pasando una colección de valores de mapa generados por el método map.values() al parámetro del constructor ArrayList.

Sintaxis: En adelante es como sigue:

List Listofvalues = new ArrayList(map.values());

Ejemplo

Java

// Java Program to Convert Map to List
 
// Importing required classes
import java.util.*;
 
class GFG {
 
    // Method 1
    public static void main(String[] args)
    {
 
        // Creating HashMap
        HashMap<String, Integer> hs = new HashMap<>();
 
        // Adding elements to hashMap
        hs.put("Geeks", 1);
        hs.put("for", 2);
        hs.put("Geeks", 3);
        hs.put("Computer", 4);
        hs.put("Science", 5);
        hs.put("Portal", 6);
 
        // Calling method
        MapValuesToList obj = new MapValuesToList(hs);
 
        // Storing into List
        List<Integer> mapvaltolist = obj.mapvaltolist(hs);
 
        // Printing via for loops
        for (Integer integerList : mapvaltolist) {
 
            // Printing our ArrayList
            System.out.println(integerList);
        }
    }
 
    // Method 2
    // To convert Map to List
    public List<String>
    mapvaltolist(Map<String, Integer> map)
    {
 
        // Using Collection
        Collection<Integer> val = map.values();
 
        // Creating an ArrayList
        ArrayList<Integer> al = new ArrayList<>(values);
 
        return al;
    }
}

Producción:

1
2
3
4
5
6

Método 3: Uso de la API de flujos

El método stream() devuelve un flujo de claves del conjunto de claves de mapa devueltas por Map.keySet(). El método collect() de la clase Stream recopila el flujo de claves en una List.The Collectors.toCollection(ArrayList::new) pasado al método collect() para recopilar como nueva ArrayList. También se puede usar Stream API para convertir claves y valores de mapas en listas respectivas. la sintaxis se proporciona a continuación de la siguiente manera:

List ListofKeys = map.keyset().stream().collect(Collectors.toCollection(ArrayList::new));
List Listofvalues= map.values().stream().collect(Collectors.toCollection(ArrayList::new));

Nota: Puede recopilar elementos de Stream en una ArrayList, LinkedList o cualquier otra implementación de Lista.

Implementación:

Dado RollNo y Student Name de N estudiantes como entrada. Primero, creamos un mapa donde Rollno es clave porque Rollno es único y Name as Value for Map, luego convertimos este mapa en una lista de valores y claves respectivamente. Donde la lista de claves generada contiene RollNo de estudiantes y la lista de Valores contiene Nombre de Estudiantes.

Ejemplo

Java

// Java program to Convert Map to List
 
// Importing required classes
import java.util.*;
// Importing stream sub-package
import java.util.stream.*;
 
// Main class
// MapToList
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Scanner class to take input of key-value pairs
        Scanner sc = new Scanner(System.in);
 
        // Creating a Hashmap which maps rollno with student
        // name
        Map<String, String> map
            = new HashMap<String, String>();
 
        // Command for better usability
        System.out.println("Enter No of Students");
 
        // Taking input to Hashmap
        // via iterating using for loop
        int noOfStudents = Integer.parseInt(sc.nextLine());
        for (int i = 0; i < noOfStudents; i++) {
 
            String input = sc.nextLine();
            String[] studentdata = input.split(" ");
 
            String rollno = studentdata[0];
            String name = studentdata[1];
 
            // Simply inserting received pairs to Map
            map.put(rollno, name);
        }
 
        // Now first create list of keys and values
        List<String> ListofKeys = null;
        List<String> ListofValues = null;
 
        // Now converting hashMap to List of keys and values
        ListofKeys = map.keySet().stream().collect(
            Collectors.toCollection(ArrayList::new));
        ListofValues = map.values().stream().collect(
            Collectors.toCollection(ArrayList::new));
 
        // lastly printing List of rollno and name of
        // students
        System.out.println("List of RollNo of Students");
        System.out.println(ListofKeys.toString());
 
        System.out.println("List of Name of Students");
        System.out.println(ListofValues.toString());
    }
}

Producción:

Publicación traducida automáticamente

Artículo escrito por AmanSingh2210 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 *