No tuve el sentido de Maps en Java. ¿Cuándo se recomienda utilizar un mapa en lugar de una lista?Lista vs Mapa en Java
gracias de antemano,
nohereman
No tuve el sentido de Maps en Java. ¿Cuándo se recomienda utilizar un mapa en lugar de una lista?Lista vs Mapa en Java
gracias de antemano,
nohereman
mapa de Java: un objeto que se asigna a los valores claves. Un mapa no puede contener claves duplicadas; cada tecla se puede asignar a un máximo de un valor.
Lista de Java: 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.
Un mapa se utiliza 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:
Cuando se desea asignar en lugar de la lista. Los nombres de esas interfaces tienen un significado, y no debes ignorarlo.
Utilice 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.
Esto es como usar una palabra en su propia definición. Esta no es una respuesta muy útil ... –
-1 por ser una respuesta inútil –
inútil. –
Map
y List
sirven para otro propósito.
List
tiene la colección de elementos. Pedido (puede obtener el artículo por índice).
Map
mantiene la clave de asignación -> valor. P.ej. asignar persona a posición: "JBeg" -> "programador". Y está desordenado. Puede obtener valor por clave, pero no por índice.
La implementación del mapa de árbol no está desordenada. – jrowe08
Depende de sus 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 Random Access Vs Sequential AccessData Structures. Ambos tienen diferentes complejidades de tiempo de ejecución y son adecuados para diferentes tipos de contextos.
Digamos que tiene un grupo de estudiantes con nombres e ID 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 seleccionar miembros específicos de una colección. Use una lista cuando no tenga sentido hacerlo.
Digamos que tenía exactamente las mismas instancias de estudiantes, pero su tarea era generar un informe de todos los nombres de los estudiantes. 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.
Creo que es mucho la cuestión de cómo desea acceder a sus datos. Con un mapa puede acceder "directamente" a sus elementos con una clave conocida, en una lista deberá buscarla, evan si está ordenada.
Compare:
List<MyObject> list = new ArrayList<MyObject>();
//Fill up the list
// Want to get object "peter"
for(MyObject m : list) {
if("peter".equals(m.getName()) {
// found it
}
}
En un mapa que puede escribir sólo
Map<String, MyObject> map = new HashMap<String, MyObject>();
// Fill map
MyObject getIt = map.get("peter");
Si tiene datos para procesar y hay que 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.
se olvidó que las listas pueden contener duplicados – Woot4Moo
¿Es una lista ordenada? ¿O 'ordenado' significa algo diferente a 'ordenado'? No tratando de nitpick ... –
el doc de Java dice ordenado, casi pongo lo mismo Tony. – Woot4Moo