Muy buenas, ando desesperado intentando resolver este ejercicio. Trata de un Taller mecánico, en el que puedo añadir partes, listar todos, mostrar partes asociados a matrícula, y eliminar partes.
La actividad la planteo con un HashMap<Matricula,ArrayList> (matrícula es un objeto de la clase Matricula, y el ArrayList contiene los partes asociados).
Mi problema llega en el método mostrar(), y lógicamente el eliminar() no lo tengo hecho porque no consigo acceder a la key matrícula de la manera adecuada.
El containsKey(m) siempre me devuelve False.
Dejo el código:
Código Java:
Ver originalpublic class Gestion {
HashMap<Matricula,ArrayList<Partes>> HashPartes = new HashMap<Matricula,ArrayList<Partes>>();
/*anadir Matricula ira asociado a anadirParte porque en el ejercicio especifica que lo que se dan de alta son partes,
por tanto debe haber una matricula asociada a los mismos. En caso de ya existir la matrícula como Key en el HashMap,
añadimos el parte al Array de partes asociados a esta.*/
//[0]Añadir un parte
public void anadirParte(){
Partes parte;
System.
out.
println("Introduce la matricula:"); Matricula m = anadirMatricula();
System.
out.
println("Introduce el código del parte:"); int codigo = Lector.leerInt();
System.
out.
println("Introduce la descripción del parte:"); String descripcion
= Lector.
leerString();
System.
out.
println("Introduce el importe del parte:"); double importe = Lector.leerDouble();
parte = new Partes(m,codigo, descripcion,importe);
if (!HashPartes.containsKey(parte.getMatricula())){
ArrayList<Partes> ArrPartes = new ArrayList<Partes>();
HashPartes.put(parte.getMatricula(), ArrPartes);
HashPartes.get(parte.getMatricula()).add(parte);
} else
HashPartes.get(parte.getMatricula()).add(parte);
}
private Matricula anadirMatricula() {
int numero=0;
System.
out.
println("Introduce la letra asociada a la provincia"); provincia = Lector.leerString();
System.
out.
println("Introduce el número de la matrícula"); numero = Lector.leerInt();
System.
out.
println("Introduce las letras del final de la matrícula"); letra=Lector.leerString();
Matricula m = new Matricula(provincia,numero,letra);
return m;
}
public void listar(){
//Primero comprobamos que el HashMap no está vacío.
System.
out.
println("LISTADO COMPLETO DE PARTES \n ========"); if(HashPartes.size()!= 0){
//Recorremos las claves por matrícula
Set<Matricula> keysmatri = HashPartes.keySet();
Iterator<Matricula> itMatri = keysmatri.iterator();
while (itMatri.hasNext()){
itMatri.hasNext();
Matricula m = itMatri.next();
//Y por cada matrícula, recorremos el array de partes
ArrayList<Partes> ArrPartes = HashPartes.get(m);
Iterator<Partes> itPart = ArrPartes.iterator();
while(itPart.hasNext()){
Partes p = itPart.next();
System.
out.
println("========"); System.
out.
println("Matricula: " + p.
getMatricula().
getProvincia() +"-"+ p.
getMatricula().
getNumero()+"-"+p.
getMatricula().
getLetra() + "\n" + "Codigo: " + p.getCodigo() + "\n" +
"Descripción: " + p.getDescripcion() + "\n" +
"Importe: " + p.getImporte() + "\n");
}
}
}else{
System.
out.
println("No hay partes para esta matrícula o la matrícula no existe."); }
}
public void mostrar(){
Matricula m = anadirMatricula();
if(HashPartes.containsKey(m)){
ArrayList<Partes> ArrPartes = HashPartes.get(m);
Iterator<Partes> itPart = ArrPartes.iterator();
while (itPart.hasNext()){
Partes p = itPart.next();
System.
out.
println("========"); System.
out.
println("Matricula: " + p.
getMatricula().
getProvincia() +"-"+ p.
getMatricula().
getNumero()+"-"+p.
getMatricula().
getLetra() + "\n" + "Codigo: " + p.getCodigo() + "\n" +
"Descripción: " + p.getDescripcion() + "\n" +
"Importe: " + p.getImporte() + "\n");
}
} else
System.
out.
println("Objeto no localizado"); }
public void eliminar(){
}
}
Muchas gracias!