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