Entrar
¿No tienes cuenta? Registrarse
SoloJava · Grupo de Usuarios Java de Venezuela
? ¿Ya tienes membresía? Entra a Yahoo!

Consejos

¿Sabías que...
Puedes acompañar la descripción de tu grupo con una foto.

Mensajes

  Mensajes Ayuda
Avanzado
hashset, el metodo remove y el metodo equals   Lista de mensajes  
Responder | Reenviar Mensaje #5296 de 5381 |
Re: [SoloJava] hashset, el metodo remove y el metodo equals

Hola,

Para que le HashSet funcione se requiere que implementes el método:
public int hashCode();

HashSet usa el método hashCode para localizar el objeto que quieres
remover. Con lo cual si el objeto que está en el HashSet y el objeto que
pasas en el remove tienen distintos hashCode, HashSet no va a poder
remover el objeto del Hash aunque el método equals retorne TRUE.

En tu caso yo implementaría el método hashCode de la siguiente manera:

public int hashCode()
{
return this.id;
}

Aquí estoy asumiendo que "id" es un int.

También seria conveniente que cuando implementes equals tomes en cuenta
todas las posibilidades, así te vas a evitar muchos dolores de cabeza.

public boolean equals(Object obj)
{
if(obj == null) return false;
if(obj instanceof MiObjeto)
{
MiObjeto sp=(MiObjeto)obj;
return this.id == sp.id;
}
return false;
}

Bye
Cesar Mendoza
http://www.kitiara.org
--
"If I have seen further it is by standing on the shoulders of giants."
--Isaac Newton

On Wed, Mar 26, 2008 at 01:37:03PM -0000, neithblue009 wrote:
> Buenos dias.
> Tengo un problema con el metodo remove del hashset.
> Necesito quitar objetos del hashset, y para definir si son o no
> iguales comparo con el id del objeto.
> 1-Sobreescribi el metodo equals:
> public boolean equals(Object obj)
> {
> MiObjeto sp=(MiObjeto)obj;
> if ( this.id == sp.id ) return true;
> }
> 2-Me comentaron que el metodo remove usa el metodo equals para poder
> saber si existen elementos iguales, pero en realidad no esta pasando
> por alli, de hecho me da un error. El error es manejado por DWR y no
> tengo la descripcion.
>
> Por favor me gustaria que me aclararan el uso del metodo equals y el
> metodo hashcode... y por supuesto porque no pasa el remove por el equals.
>
> Gracias..
> "Neith-->"
>




Mié, 26 de Mar, 2008 3:36 pm

p4kscs
Sin conexión Sin conexión
Enviar correo Enviar correo

Reenviar Mensaje #5296 de 5381 |
Desplegar mensajes Autor Ordenar por fecha

Buenos dias. Tengo un problema con el metodo remove del hashset. Necesito quitar objetos del hashset, y para definir si son o no iguales comparo con el id del...
neithblue009
Sin conexión Enviar correo
26 de Mar, 2008
2:14 pm

Hola, Para que le HashSet funcione se requiere que implementes el método: public int hashCode(); HashSet usa el método hashCode para localizar el objeto que...
Cesar Mendoza
p4kscs
Sin conexión Enviar correo
26 de Mar, 2008
3:39 pm

... equals. ... Gracias Ya funciono....
neithblue009
Sin conexión Enviar correo
26 de Mar, 2008
8:16 pm
Avanzado

Copyright © 2009 Yahoo! Inc. Todos los derechos reservados.
Normativa de confidencialidad - Condiciones del servicio - Reglas - Ayuda