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 original
public 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; Matricula m = anadirMatricula(); int codigo = Lector.leerInt(); 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; provincia = Lector.leerString(); numero = Lector.leerInt(); letra=Lector.leerString(); Matricula m = new Matricula(provincia,numero,letra); return m; } public void listar(){ //Primero comprobamos que el HashMap no está vacío. 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("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{ } } 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("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 } public void eliminar(){ } }
Muchas gracias!