2012-06-11 12 views
10

Duplicar posible:
Differences between HashMap and Hashtable?¿Cuál es el principal beneficio de usar HashMap en Java?

En este proyecto Java que estoy viendo, sigo viendo código con HashMap, al igual que

/** imageID --> image map */ 
    Map<String,ImageIcon> imgs = new HashMap<String,ImageIcon>(); 

Luego, más tarde en el clase:

// images 
loadImages(); 
actualImage = imgs.get(this.DEFAULT_IMAGE_ID); 
JLabel label = new JLabel(actualImage); 

¿Cuál es el propósito de este código? Estoy empañado en todo el concepto aquí. Gracias

+0

@JigarJoshi - Gracias por ese enlace, y buen punto. después de mi edición; Aunque creo que mi pregunta es un poco diferente ahora – Coffee

Respuesta

18

Ambos proporcionan acceso de valor clave a los datos. The Hashtable es una de las clases de colecciones originales en Java. HashMap es parte del nuevo Framework de Colecciones, agregado con Java 2, v1.2.

La diferencia clave entre los dos es que el acceso al Hashtable se sincroniza en la tabla mientras que el acceso al HashMap no lo está. Puede agregarlo, pero no está allí por defecto.

Otra diferencia es que el iterador en el HashMap es a prueba de errores mientras que el enumerador de la tabla Hashtable no lo es. Si cambias el mapa mientras iteras, sabrás.

Y, una tercera diferencia es que HashMap permite valores nulos, mientras que Hashtable no.

respuesta a su pregunta Editado:

/** imageID --> image map */ 
//imageID - String. imgs is a map of imageID and ImageIcon. imageID is key. ImageIcon is value. 
    Map<String,ImageIcon> imgs = new HashMap<String,ImageIcon>(); 

Luego, más tarde en la clase:

//SEE INLINE COMMENTS 
// images 
//No definition provided. May be putting values into the imgs map. 
loadImages(); 
//this.DEFAULT_IMAGE_ID is some imageID. imgs.get gets the value for that imageID, which 
//is ImageIcon for that imageID. That is stored in actualImage variable. 
actualImage = imgs.get(this.DEFAULT_IMAGE_ID); 
//Creating a new JLabel with actualImage. 
JLabel label = new JLabel(actualImage); 
+0

¡Muchas gracias! – Coffee

+0

OK, voy a hacerlo;) – Coffee

2

beneficio principal del uso de HashMap en Java? Probablemente velocidad. Este contenedor divide sus datos en una gran cantidad de "cubos" que contienen solo elementos con el mismo hashcode de clave. De esta forma, cuando necesite encontrar algún par clave-valor, no tendrá que iterar sobre todos sus datos, sino solo sobre los elementos con el mismo código hash en la clave como el código hash de la clave buscada.

Cuestiones relacionadas