Saltar al contenido

Cuándo usar HashMap sobre LinkedList o ArrayList y viceversa

Hacemos una verificación exhaustiva cada tutoriales de nuestro sitio web con el objetivo de enseñarte en todo momento la información con la mayor veracidad y certera.

Solución:

Las listas representan un orden secuencial de elementos. Los mapas se utilizan para representar una colección de key / pares de valores.

Si bien podría usar un mapa como una lista, hay algunas desventajas definidas al hacerlo.

Orden de mantenimiento:
– Una lista por definición es ordenada. Agrega elementos y luego puede iterar hacia atrás a través de la lista en el orden en que insertó los elementos. Cuando agrega elementos a un HashMap, no tiene la garantía de recuperar los elementos en el mismo orden en que los colocó. Hay subclases de HashMap como LinkedHashMap que mantendrán el orden, pero en general el orden no está garantizado con un Mapa.

Semántica clave/valor:
– El propósito de un mapa es almacenar elementos basados ​​en un key que se puede utilizar para recuperar el elemento en un momento posterior. Una funcionalidad similar solo se puede lograr con una lista en el caso limitado en que el key pasa a ser la posición en la lista.

Legibilidad del código
Considere los siguientes ejemplos.

    // Adding to a List
    list.add(myObject);         // adds to the end of the list
    map.put(myKey, myObject);   // sure, you can do this, but what is myKey?
    map.put("1", myObject);     // you could use the position as a key but why?

    // Iterating through the items
    for (Object o : myList)           // nice and easy
    for (Object o : myMap.values())   // more code and the order is not guaranteed

Funcionalidad de colección
Algunas funciones de gran utilidad están disponibles para las listas a través de la clase Colecciones. Por ejemplo …

    // Randomize the list
    Collections.shuffle(myList);

    // Sort the list
    Collections.sort(myList, myComparator);  

Espero que esto ayude,

Las listas y los mapas son estructuras de datos diferentes. Los mapas se utilizan para cuando desea asociar un key con un valor y las Listas son una colección ordenada.

Map es una interfaz en Java Collection Framework y HashMap es una implementación de la interfaz Map. HashMap son eficientes para ubicar un valor basado en un key e insertar y eliminar valores basados ​​en un key. Las entradas de un HashMap no están ordenadas.

ArrayList y LinkedList son una implementación de la interfaz List. LinkedList proporciona acceso secuencial y generalmente es más eficiente para insertar y eliminar elementos en la lista; sin embargo, es menos eficiente para acceder a los elementos de una lista. ArrayList proporciona acceso aleatorio y es más eficiente para acceder a los elementos, pero generalmente es más lento para insertar y eliminar elementos.

Pondré aquí algunos ejemplos de casos reales y escenarios en los que usar uno u otro, podría ser de ayuda para alguien más:

mapa hash

Cuando tienes que usar caché en tu aplicación. Redis y membase son algún tipo de HashMap extendido. (No importa el orden de los elementos, necesita un acceso de lectura rápido (O(1)) (un valor), usando un key).

Lista enlazada

Cuando el orden es importante (se ordenan tal como se agregaron a LinkedList), la cantidad de elementos es desconocida (no desperdicie la asignación de memoria) y necesita un tiempo de inserción rápido (O(1)). Un buen ejemplo es una lista de elementos pendientes que se pueden enumerar secuencialmente a medida que se agregan.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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