Lista vs Mapa en Java

No entendí el sentido de Maps en Java. ¿Cuándo se recomienda utilizar un mapa en lugar de una lista?

gracias por adelantado,

nohereman

Mapa de Java: un objeto que asigna claves a valores. Un mapa no puede contener claves duplicadas; cada tecla se puede asignar a un máximo de un valor.

Lista de Java: una colección ordenada (también conocida como secuencia). El usuario de esta interfaz tiene un control preciso sobre en qué parte de la lista se inserta cada elemento. El usuario puede acceder a los elementos por su índice entero (posición en la lista) y buscar elementos en la lista.

La diferencia es que son diferentes. El mapa es un mapeo de clave / valores, una lista de una lista de elementos.

Supongamos que tiene un grupo de estudiantes con nombres e identificaciones de estudiantes. Si los coloca en una lista, la única forma de encontrar al alumno con student_id = 300 es mirar cada elemento de la lista, uno a la vez, hasta encontrar el alumno adecuado.

Con un mapa, asocia la identificación de cada alumno y la instancia del alumno. Ahora puedes decir “tráeme estudiante 300” y recuperar a ese alumno al instante.

Use un mapa cuando necesite elegir miembros específicos de una colección. Use una lista cuando no tenga sentido hacerlo.

Supongamos que tiene exactamente las mismas instancias de estudiantes, pero su tarea consistía en generar un informe con los nombres de todos los alumnos. Los pondría en una lista ya que no habría necesidad de seleccionar y elegir estudiantes individuales y, por lo tanto, no es necesario un mapa.

Depende de tus preocupaciones sobre el rendimiento. Un mapa más explícitamente un HashMap garantizará O (1) en inserciones y eliminaciones. Una lista tiene como mucho O (n) para encontrar un artículo. Entonces, si tiene la bondad de explicar en qué consiste su situación, podemos ayudarlo más.

Probablemente sea una buena idea revisar las Estructuras de Datos de Acceso Secuencial de Acceso Aleatorio . Ambos tienen diferentes complejidades de tiempo de ejecución y son adecuados para diferentes tipos de contextos.

Creo que es mucho la cuestión de cómo quieres acceder a tus datos. Con un mapa puede acceder “directamente” a sus elementos con una clave conocida, en una lista deberá buscarla, evan si está ordenada.

Comparar:

List list = new ArrayList(); //Fill up the list // Want to get object "peter" for( MyObject m : list ) { if( "peter".equals( m.getName() ) { // found it } } 

En un mapa puedes simplemente escribir

 Map map = new HashMap(); // Fill map MyObject getIt = map.get("peter"); 

Si tiene datos para procesar y necesita hacerlo con todos los objetos de todos modos, una lista es lo que quiere. Si desea procesar objetos individuales con una clave conocida, un mapa es mejor. No es la respuesta completa (solo mi 2 …) pero espero que pueda ser de ayuda.

Un mapa se usa como una asociación de una clave y un valor. Con una lista, básicamente solo tienes valores.
Los índices en Lista siempre son int, mientras que en Map puede tener otro Object como clave.


Recursos:

  • sun.com – Introducción al Marco de Colecciones, Mapa

Cuando desee mapear en lugar de enumerar. Los nombres de esas interfaces tienen un significado, y no debes ignorarlo.

Use un mapa cuando desee que su estructura de datos represente un mapeo para las claves de los valores. Use una lista cuando desee que sus datos se almacenen en un formato arbitrario ordenado.

Map y la List tienen un propósito diferente.

List contiene la colección de elementos. Pedido (puede obtener el artículo por índice).

Map contiene la clave de asignación -> valor. Eg map person to position: “JBeg” -> “progtwigdor”. Y está desordenado. Puede obtener valor por clave, pero no por índice.