Convertir ArrayList a LinkedHashMap en Java

LinkedHashMap es una clase predefinida en Java que es similar a HashMap, contiene clave y su valor respectivo a diferencia de HashMap, en LinkedHashMap se conserva el orden de inserción.

Necesitamos convertir ArrayList a LinkedHashMap. El valor clave de LinkedHashMap será un índice de ArrayList, básicamente, LinkedHashMap también será el mismo que ArrayList en términos de iteración y almacenamiento de datos.

Ejemplo :

Input ArrayList :  { 5, 6, 7, 8, 4 } 

Output LinkedHashMap :

Index  |  Value
  1    |    5
  2    |    6
  3    |    7
  4    |    8
  5    |    4

Podemos convertir ArrayList a LinkedHashMap de 2 maneras:

  1. Usando el bucle for-each recorriendo toda la ArrayList y empujando cada elemento a LinkedHashMap.
  2. Uso de flujos en la versión java 8.

Enfoque: uso del ciclo for-each

  • Tomando entrada en ArrayList.
  • Usar un bucle For/While para insertar valor en LinkedHashMap (la clave de LinkedHashMap será un índice de ArrayList suponiendo que el primer índice sea 1)

Pseudocódigo:
 

while (i < l1.size()) {

            l.put(i + 1, l1.get(i));
            i++; 
}

Here, "l1" is ArrayList and "l" is LinkedHashMap.

Java

// Java program to convert ArrayList
// to LinkedHashMap
  
import java.util.*;
import java.io.*;
  
class GFG {
    public static void main(String[] args)
    {
        LinkedHashMap<Integer, Integer> l = new LinkedHashMap<>();
  
        ArrayList<Integer> l1 = new ArrayList<>();
        l1.add(5);
        l1.add(6);
        l1.add(7);
        l1.add(8);
        l1.add(4);
  
        int i = 0;
       
        // Adding one by one the elements 
        // of ArrayList to LinkedHashMap
        while (i < l1.size()) 
        {
  
            l.put(i + 1, l1.get(i));
            i++;
        }
        
        System.out.println("Key  |  Value");
        
        // .entrySet() method gives us the list of all 
        // mappings reference of the map
        for (Map.Entry<Integer, Integer> it :l.entrySet()) {
            
            System.out.println(" " + it.getKey() + "   |  "
                               + it.getValue());
            
        }
    }
}
Producción

Key  |  Value
 1   |  5
 2   |  6
 3   |  7
 4   |  8
 5   |  4

Complejidad de tiempo: O(n)

Enfoque 2: uso de flujos

Si está utilizando Java 8 o superior, hay otro método, puede usar la secuencia para convertir la Lista en un objeto LinkedHashMap. que

Ejemplo:

Java

// Java program to convert ArrayList to LinkedHashMap
  
import java.util.*;
import java.io.*;
import java.util.stream.Collectors;
class integer {
  
    private Integer id;
    private String name;
  
    public integer(Integer id, String name)
    {
        this.id = id;
        this.name = name;
    }
  
    public Integer getId() { return this.id; }
    
    // the .toString method of Object class
    // will be called by default when the object
    // of integer class will be made
    public String toString()
    {
        return "[" + this.id + "=>" + this.name + "]";
    }
}
  
class GFG {
    public static void main(String[] args)
    {
  
        List<integer> List = new ArrayList<integer>();
  
        List.add(new integer(1, "will"));
        List.add(new integer(2, "mike"));       
        List.add(new integer(3, "luke"));
        List.add(new integer(4, "dustin"));
  
        System.out.println("ArrayList contains: " + List);
  
        // stream Api is used here to convert the 
        // List to LinkedHashMap
        Map<Integer, integer> HashMap = List.stream().collect(Collectors.toMap(
                       integer::getId, integer -> integer));
  
        System.out.println("Map contains: " + HashMap); 
    }
}
Producción

ArrayList contains: [[1=>will], [2=>mike], [3=>luke], [4=>dustin]]
Map contains: {1=[1=>will], 2=[2=>mike], 3=[3=>luke], 4=[4=>dustin]}

Publicación traducida automáticamente

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