Cómo clonar un mapa en Java

Dado un mapa, la tarea es clonar ese mapa.

Las siguientes son las 5 formas diferentes de clonar un mapa en Java.

Ejemplo:

{1=Geeks, 2=For, 3=Geeks}
  • Método 1: Método ingenuo
    1. Cree un objeto para el mapa de clase.
    2. Coloque los elementos en el mapa usando el método put().
    3. Vuelva a crear otro objeto para el mapa de clases.
    4. Ahora, finalmente, itere el mapa y llame al método put para clonar el mapa inicial.

    A continuación se muestra la implementación del enfoque anterior:

    Implementación:

    // Program to clone a Map in Java
    // Naive Method
      
    import java.util.*;
      
    class GFG {
        public static void main(String[] args)
        {
            // Creating an object for class Map
            Map<Integer, String> hash_Map
                = new HashMap<Integer, String>();
      
            // putting elements into the map
            hash_Map.put(1, "Geeks");
            hash_Map.put(2, "For");
            hash_Map.put(3, "Geeks");
      
            // Creating a new object for
            // class Map to clone a map
            Map<Integer, String> new_map
                = new HashMap<Integer, String>();
      
            // using iterator
            for (Map.Entry<Integer, String> entry : hash_Map.entrySet()) {
                new_map.put(entry.getKey(),
                            entry.getValue());
            }
      
            System.out.println(new_map);
        }
    }
    Producción:

    {1=Geeks, 2=For, 3=Geeks}
    
  • Método 2: Usar putAll().
    1. Cree un objeto para el mapa de clase.
    2. Coloque los elementos en el mapa usando el método put().
    3. Vuelva a crear otro objeto para el mapa de clases.
    4. Ahora finalmente use el método putAll() para clonar el mapa inicial.

    A continuación se muestra la implementación del enfoque anterior:

    Implementación:

    // Program to clone a Map in Java
    // putAll Method
      
    import java.util.*;
      
    class GFG {
      
        public static void main(String[] args)
        {
            // Creating an object for class Map
            Map<Integer, String> hash_Map
                = new HashMap<Integer, String>();
      
            // Putting elements into the map
            hash_Map.put(1, "Geeks");
            hash_Map.put(2, "For");
            hash_Map.put(3, "Geeks");
      
            // Creating a new object
            // for class Map to clone a map
            Map<Integer, String> new_map
                = new HashMap<Integer, String>();
      
            // using putAll method
            new_map.putAll(hash_Map);
      
            System.out.println(new_map);
        }
    }
    Producción:

    {1=Geeks, 2=For, 3=Geeks}
    
  • Método 3: Copiar constructor.
    1. Cree un objeto para el mapa de clase.
    2. Coloque los elementos en el mapa usando el método put().
    3. Vuelva a crear otro objeto para el mapa de clases.
    4. Ahora, finalmente, use el constructor de copia (es un constructor especial que se usa para crear un nuevo objeto como una copia de un objeto existente) para clonar el mapa inicial.

    A continuación se muestra la implementación del enfoque anterior:

    Implementación:

    // Program to clone a Map in Java
    // Copy Constructor
      
    import java.util.*;
      
    class GFG {
      
        public static void main(String[] args)
        {
            // Creating an object for class Map
            Map<Integer, String> hash_Map
                = new HashMap<Integer, String>();
      
            // putting elements into the map
            hash_Map.put(1, "Geeks");
            hash_Map.put(2, "For");
            hash_Map.put(3, "Geeks");
      
            // Creating a new object
            // for class Map to clone a map
            Map<Integer, String> new_map
                = new HashMap<Integer, String>();
      
            new_map = new HashMap<>(hash_Map);
            System.out.println(new_map);
        }
    }
    Producción:

    {1=Geeks, 2=For, 3=Geeks}
    
  • Método 4: Java 8
    1. Cree un objeto para el mapa de clase.
    2. Coloque los elementos en el mapa usando el método put().
    3. Vuelva a crear otro objeto para el mapa de clases.
    4. Ahora finalmente use Stream API de Java 8 para clonar el mapa inicial.

    A continuación se muestra la implementación del enfoque anterior:

    Implementación:

    // Program to clone a Map in Java
    // Using java8
      
    import java.util.*;
    import java.util.stream.Collectors;
      
    class GFG {
      
        public static void main(String[] args)
        {
            // Creating an object for class Map
            Map<Integer, String> hash_Map
                = new HashMap<Integer, String>();
      
            // putting elements into the map
            hash_Map.put(1, "Geeks");
            hash_Map.put(2, "For");
            hash_Map.put(3, "Geeks");
      
            // Creating a new object
            // for class Map to clone a map
            Map<Integer, String> new_map
                = new HashMap<Integer, String>();
      
            new_map
                = hash_Map.entrySet()
                      .stream()
                      .collect(
                          Collectors
                              .toMap(Map.Entry::getKey,
                                     Map.Entry::getValue));
      
            System.out.println(new_map);
        }
    }
    Producción:

    {1=Geeks, 2=For, 3=Geeks}
    

    Explicación: también es similar a los métodos anteriores, pero aquí usamos Stream API de Java 8 para clonar el mapa original.

  • Método 5: JSON
    1. Cree un objeto para el mapa de clase.
    2. Coloque los elementos en el mapa usando el método put().
    3. Vuelva a crear otro objeto para el mapa de clases.
    4. Ahora finalmente use la biblioteca GSON de Google para clonar el mapa inicial.

    A continuación se muestra la implementación del enfoque anterior:

    Implementación:

    // Program to clone a Map in Java
    // JSON Method
      
    import java.util.*;
    import java.util.stream.Collectors;
    import com.google.gson.Gson;
      
    class GFG {
      
        public static void main(String[] args)
        {
            // Creating an object for class Map
            Map<Integer, String> hash_Map
                = new HashMap<Integer, String>();
      
            // putting elements into the map
            hash_Map.put(1, "Geeks");
            hash_Map.put(2, "For");
            hash_Map.put(3, "Geeks");
      
            // Creating a new object
            // for class Map to clone a map
            Map<Integer, String> new_map
                = new HashMap<Integer, String>();
            Gson gson = new Gson();
      
            String jsonString = gson.toJson(hash_Map);
      
            new_map = gson.fromJson(jsonString, Map.class);
      
            System.out.println(new_map);
        }
    }
    Producción:

    {1=Geeks, 2=For, 3=Geeks}
    

    Explicación: también es similar a los métodos anteriores, pero aquí usamos la biblioteca GSON de Google para clonar el mapa original. Aquí inicialmente convertimos Map en una string JSON y luego convertimos esa string en un nuevo mapa.

  • Publicación traducida automáticamente

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