Foros del Web » Programación para mayores de 30 ;) » Java »

hashmap - problema para mostrar un sólo dato, y listar todos

Estas en el tema de hashmap - problema para mostrar un sólo dato, y listar todos en el foro de Java en Foros del Web. Hola. Bueno, pues mi problema es este: Tengo un hashmap que le relleno con put. Código HTML: Parte p1 = new Parte(cod,des,prec,mat); int i=1; matriculas.put(i,p1); ...
  #1 (permalink)  
Antiguo 02/06/2011, 13:23
 
Fecha de Ingreso: marzo-2008
Mensajes: 197
Antigüedad: 16 años, 2 meses
Puntos: 3
hashmap - problema para mostrar un sólo dato, y listar todos

Hola.
Bueno, pues mi problema es este:
Tengo un hashmap que le relleno con put.
Código HTML:
Parte p1 = new Parte(cod,des,prec,mat); 
    	  int i=1;
    	  matriculas.put(i,p1);
    	  i++;
matriculas es el hashmap.

Ahora, intento que me muestre uno. En el cual, pido uno de los datos que hay en el hashmap. Y le intento mostrar así, aunque he probado mil maneras... :
Código HTML:
    	  Object object =this.matriculas.get(mat);
    	  String cadena = object.toString();
    	  System.out.print(cadena+" ");
Pero me da este error:
Exception in thread "main" java.lang.NullPointerException

Para eliminar, lo hago así:
Parte p2 = new Parte(cod,des,prec,mat);
//si existe el objeto que ha dicho el usuario quiere eliminar
if(matriculas.containsKey(p2)){
matriculas.remove(p2);
}else{
System.out.println("El parte que quiere eliminar, no existe");
}


Pero siempre me da como si no hubiera datos. pero está bien hecho la creación...
Tal vez un dato apra conseguir saber que pasa es el error:
Exception in thread "main" java.lang.NullPointerException

Alguien me puede ayudar?
Muchas gracias de antemano!!
  #2 (permalink)  
Antiguo 03/06/2011, 00:51
 
Fecha de Ingreso: mayo-2011
Mensajes: 79
Antigüedad: 13 años
Puntos: 14
Respuesta: hashmap - problema para mostrar un sólo dato, y listar todos

Fijate que estás rellenando la Hashmap con:

Parte p1 = new Parte(cod,des,prec,mat);
int i=1;
matriculas.put(i,p1);
i++;

e intentas recuperar sus valores con:

Object object =this.matriculas.get(mat);

Si estas usando como key un int (i) para rellenarla si luego preguntas con el mat es normal que te de un null pointer exception. Para ello tendrías que rellenar las Hashmap con algo como:

matriculas.put(mat,p1);

Saludos
__________________
Web Admin:
http://www.coretec.es
Tutoriales, Noticias y Recursos Liferay y J2EE
  #3 (permalink)  
Antiguo 03/06/2011, 08:14
 
Fecha de Ingreso: marzo-2008
Mensajes: 197
Antigüedad: 16 años, 2 meses
Puntos: 3
Respuesta: hashmap - problema para mostrar un sólo dato, y listar todos

Muchas gracias por su respuesta.
Pero hago lo que usted me ha dicho, y me sigue sin funcionar..
Me sale como que la matrícula no existe, cuando voy a eliminar.
Así que ese no es el error...

He puesto esta linea, cuando creo un dato en el hashmap. Para saber el tamaño del hashmap.
System.out.println("The size of HashMap = "+ matriculas.size());
Y siempre me muestra 1.

Y luego cuando intento eliminar, no encuentra ninguna de las matriculas que creo, ya que las pruebo todas.

Si a alguien se le corre otro error.. lo agradecería mucho.

Muchas gracias de antemano.
  #4 (permalink)  
Antiguo 04/06/2011, 07:15
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: hashmap - problema para mostrar un sólo dato, y listar todos

Muestra el codigo completo.
  #5 (permalink)  
Antiguo 04/06/2011, 08:15
 
Fecha de Ingreso: marzo-2008
Mensajes: 197
Antigüedad: 16 años, 2 meses
Puntos: 3
Respuesta: hashmap - problema para mostrar un sólo dato, y listar todos

Vale. gracias por responder..
Para crear:
Código HTML:
System.out.println("codigo");
				int codig=Lector.leerInt();
			
				System.out.println("descripcion");
				String descripcio=Lector.leerString();
				
				System.out.println("precio");
				double preci=Double.parseDouble( Lector.leerString());
			
				System.out.println("matricula");
				String matricula=Lector.leerString();
			
		GestorPartes gp1=new GestorPartes();
				gp1.crearParte(codig,descripcio,preci, matricula);
				System.out.println("El parte ha sido creado");}
            catch(Exception e){
                  System.out.println("Algún dato introducido no es correcto, vuelva a intentarlo");
            }
  #6 (permalink)  
Antiguo 04/06/2011, 08:21
 
Fecha de Ingreso: marzo-2008
Mensajes: 197
Antigüedad: 16 años, 2 meses
Puntos: 3
Respuesta: hashmap - problema para mostrar un sólo dato, y listar todos

Sigo con el mensaje..que di a enviar sin querer:

El métdoo crearParte es:
Código HTML:
try{
    		  Parte p1 = new Parte(cod,des,prec,mat); 
        	  int i=1;
   HashMap matriculas =new HashMap();
        	  matriculas.put(mat,p1);
    	  }catch(Exception e){
              System.out.println("ERROR");
    	  }
el hashmap de matriculas, lo creo fuera, pero lo pongo ahí apra que se vea lo que es.

Para eliminar ya lo puse.

Para listar todo el hashmap es:
Lo llamo asi:
Código HTML:
gp1.listar();
Y lo listo asi:
Código HTML:
Set s = matriculas.keySet();
    	  Iterator it = s.iterator();
    	  while(it.hasNext()){
    		  String aux = (String)it.next();
    		  System.out.println(aux + ": " + matriculas.get(aux));
    	  } System.out.println("The size of HashMap = "+ matriculas.size());

Ahh, y al crearlo, creo un objeto de la clase Parte, que es así:
Código HTML:
public class Parte{
	int codigo;
	String descripcion;
	double precio;
	String matricula;
	
	//contructor
	public Parte(int cod, String des, double prec,String matri){
		codigo=cod;
		descripcion=des;
		precio=prec;
		matricula=matri;
	}
Ojalá puedan ayudarme, porque no encuentro el error

Muchas gracias por sus respuestas

Etiquetas: dato, listar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:03.