Ver Mensaje Individual
  #4 (permalink)  
Antiguo 23/06/2011, 14:12
jeisongutierrez
 
Fecha de Ingreso: junio-2011
Mensajes: 39
Antigüedad: 13 años, 5 meses
Puntos: 16
Respuesta: Problema con hashmap

PRIMERO:

Tu estas creando el HashMap así:

Código HTML:
HashMap<Object, Object>  matriculas =new HashMap<Object, Object>();
Sin embargo, si ya conoces los tipos de objetos que almacenará porque mejor no los creas asi:

Código HTML:
HashMap<Parte, MatriculaCoche>  matriculas =new HashMap<Parte, MatriculaCoche>();
SEGUNDO:

Cada entrada de un HashMap esta formada por un objeto clave y un objeto valor. Cuando haces esto:

Código HTML:
Set<Object> s = matriculas.keySet();
Iterator<Object> it2 = s.iterator();
estas obteniendo un conjunto (Set) de todos los objetos clave y sobre ese conjunto obtienes un iterador para recorrerlo.

Pero cuando haces esto:

Código HTML:
while(it2.hasNext()){
    	 MatriculaCoche ma = (MatriculaCoche)it2.next();
    	 System.out.println(ma + " - " + matriculas.get(ma));
}
cometes tu primer error, pues en it2 estas almacenado el conjunto de objetos clave (Para tu caso es un conjunto de objetos tipo Parte) y estas intentando obtener un objeto tipo MatriculaCoche a partir de un objeto tipo Parte.

Por lo tanto si lo que quieres es obtener el conjunto de valores y no de claves, tienes que reemplazar el método keySet() por values() del HashMap

TERCERO:

Código HTML:
MatriculaCoche@7d8a992f - ejercicio2A6.Parte@45bab50a
La salida anterior es lo obvio pues le estas diciendo al JVM que te imprima el objeto, el numero despues del @ es el devuelto por el método hashCode() de la clase Object de la cual heredan todos los objetos en Java.

Si quieres que al hacer System.out.println(); puedas ver el contenido del objeto (de sus variables), deberás sobreescribir el método toString() en tu clase.

Un recurso donde puedes las formas de recorrer un HashMap
http://stackoverflow.com/questions/1066589/java-iterate-through-hashmap

Última edición por jeisongutierrez; 23/06/2011 a las 14:32