Programa para Convertir Lista a Mapa en Java

La Lista es una interfaz secundaria de la Colección. Es una colección ordenada de objetos en los que se pueden almacenar valores duplicados. Dado que List conserva el orden de inserción, permite el acceso posicional y la inserción de elementos. La interfaz de lista se implementa mediante las clases ArrayList , LinkedList , Vector y Stack .

La interfaz java.util.Map representa un mapeo entre una clave y un valor. La interfaz Mapa no es un subtipo de la interfaz Colección . Por lo tanto se comporta un poco diferente al resto de tipos de colección.
interfaz de mapa

Ejemplo:

Input: List : [1="1", 2="2", 3="3"]
Output: Map : {1=1, 2=2, 3=3}

Input: List : [1="Geeks", 2="for", 3="Geeks"]
Output: Map : {1=Geeks, 2=for, 3=Geeks}

A continuación se muestran varias formas de convertir Lista a Mapa en Java. Para ello, se supone que cada elemento de la Lista tiene un identificador que se utilizará como clave en el Mapa resultante.

  1. Usando por objeto de la lista:

    Acercarse:

    1. Obtener la Lista para convertirla en Mapa
    2. Crear un mapa vacío
    3. Recorra los elementos de la lista y agregue cada uno de ellos al Mapa.
    4. Devolver el Mapa formado

    // Java program for list convert in map
    // with the help of Object method
      
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import java.util.HashMap;
      
    // create a list
    class Student {
      
        // id will act as Key
        private Integer id;
      
        // name will act as value
        private String name;
      
        // create curstuctor for reference
        public Student(Integer id, String name)
        {
      
            // assign the value of id and name
            this.id = id;
            this.name = name;
        }
      
        // return private variable id
        public Integer getId()
        {
            return id;
        }
      
        // return private variable name
        public String getName()
        {
            return name;
        }
    }
      
    // main class and method
    public class GFG {
      
        // main Driver
        public static void main(String[] args)
        {
      
            // create a list
            List<Student>
                lt = new ArrayList<Student>();
      
            // add the member of list
            lt.add(new Student(1, "Geeks"));
            lt.add(new Student(2, "For"));
            lt.add(new Student(3, "Geeks"));
      
            // create map with the help of
            // Object (stu) method
            // create object of Map class
            Map<Integer, String> map = new HashMap<>();
      
            // put every value list to Map
            for (Student stu : lt) {
                map.put(stu.getId(), stu.getName());
            }
      
            // print map
            System.out.println("Map  : " + map);
        }
    }
    Producción:

    Map  : {1=Geeks, 2=For, 3=Geeks}
    
  2. Uso del método Collectors.toMap(): este método incluye la creación de una lista de los objetos de los estudiantes y utiliza Collectors.toMap() para convertirlo en un mapa.
    Acercarse:
    1. Obtener la Lista para convertirla en Mapa
    2. Convierta la Lista en flujo usando el método List.stream()
    3. Crea un mapa con la ayuda del método Collectors.toMap()
    4. Recopile el mapa formado usando el método stream.collect()
    5. Devolver el Mapa formado

    // Java program for list convert  in map
    // with the help of Collectors.toMap() method
      
    import java.util.ArrayList;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.stream.Collectors;
      
    // create a list
    class Student {
      
        // id will act as Key
        private Integer id;
      
        // name will act as value
        private String name;
      
        // create curstuctor for reference
        public Student(Integer id, String name)
        {
      
            // assign the value of id and name
            this.id = id;
            this.name = name;
        }
      
        // return private variable id
        public Integer getId()
        {
            return id;
        }
      
        // return private variable name
        public String getName()
        {
            return name;
        }
    }
      
    // main class and method
    public class GFG {
      
        // main Driver
        public static void main(String[] args)
        {
      
            // create a list
            List<Student> lt = new ArrayList<>();
      
            // add the member of list
            lt.add(new Student(1, "Geeks"));
            lt.add(new Student(2, "For"));
            lt.add(new Student(3, "Geeks"));
      
            // create map with the help of
            // Collectors.toMap() method
            LinkedHashMap<Integer, String>
                map = lt.stream()
                          .collect(
                              Collectors
                                  .toMap(
                                      Student::getId,
                                      Student::getName,
                                      (x, y)
                                          -> x + ", " + y,
                                      LinkedHashMap::new));
      
            // print map
            map.forEach(
                (x, y) -> System.out.println(x + "=" + y));
        }
    }
    Producción:

    1=Geeks
    2=For
    3=Geeks
    
  3. Creando MultiMap usando Collectors.groupingBy():

    Acercarse:

    1. Obtener la Lista para convertirla en Mapa
    2. Convierta la Lista en flujo usando el método List.stream()
    3. Crea un mapa con la ayuda del método Collectors.groupingBy()
    4. Recopile el mapa formado usando el método stream.collect()
    5. Devolver el Mapa formado

    // Java program for list convert  in map
    // with the help of Collectors.groupingBy() method
      
    import java.util.*;
    import java.util.stream.Collectors;
      
    // create a list
    class Student {
      
        // id will act as Key
        private Integer id;
      
        // name will act as value
        private String name;
      
        // create curstuctor for reference
        public Student(Integer id, String name)
        {
      
            // assign the value of id and name
            this.id = id;
            this.name = name;
        }
      
        // return private variable id
        public Integer getId()
        {
            return id;
        }
      
        // return private variable name
        public String getName()
        {
            return name;
        }
    }
      
    // main class and method
    public class GFG {
      
        // main Driver
        public static void main(String[] args)
        {
      
            // create a list
            List<Student> lt = new ArrayList<Student>();
      
            // add the member of list
            lt.add(new Student(1, "Geeks"));
            lt.add(new Student(1, "For"));
            lt.add(new Student(2, "Geeks"));
            lt.add(new Student(2, "GeeksForGeeks"));
      
            // create map with the help of
            // Object (stu) method
            // create object of Multi Map class
      
            // create multimap and store the value of list
            Map<Integer, List<String> >
                multimap = lt
                               .stream()
                               .collect(
                                   Collectors
                                       .groupingBy(
                                           Student::getId,
                                           Collectors
                                               .mapping(
                                                   Student::getName,
                                                   Collectors
                                                       .toList())));
      
            // print the multiMap
            System.out.println("MultiMap = " + multimap);
        }
    }
    Producción:

    MultiMap = {1=[Geeks, For], 2=[Geeks, GeeksForGeeks]}
    

Publicación traducida automáticamente

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