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

Duda con treeSety y Comparable

Estas en el tema de Duda con treeSety y Comparable en el foro de Java en Foros del Web. Buenas tengo una dudilla con JAVA a ver si se puede hacer esto. ME piden un treeSet ordenado por edad, hasta ahi bien porque implemento ...
  #1 (permalink)  
Antiguo 06/06/2015, 07:38
 
Fecha de Ingreso: abril-2009
Mensajes: 64
Antigüedad: 15 años
Puntos: 0
Duda con treeSety y Comparable

Buenas tengo una dudilla con JAVA a ver si se puede hacer esto.
ME piden un treeSet ordenado por edad, hasta ahi bien porque implemento en la clase persona Comparable con esto:
@Override
public int compareTo(Persona o) {

//return this.nombre.compareTo(o.nombre);
return o.edad-this.edad;
}

El caso es que luego se me pide eliminar a una persona por el nombre, pero claro, al estar ordenado por edad, solo busca la edad, para eliminar.
Como podria hacerse para que muestre el treeSet ordenado por edades, me pregunte por consola quien quiero borrar, y que tan solo dandole un nombre me elimine si existe ese nombre?.
Muchas gracias por adelantado.
  #2 (permalink)  
Antiguo 06/06/2015, 09:46
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Duda con treeSety y Comparable

Hola:

Si a Persona le implementas el método equals() sobreescribiendo el heredado de Object, ese método será el que se use para buscar dentro del TreeSet. En concreto, si llamas al método remove() de treeset pasándole una Persona con un nombre, y has implementado el equals() de persona con el nombre, se buscará por nombre para borrar.

El método equals() lo implementa automáticamente cualquier IDE (eclipse, netbeans) si se lo pides y en el proceso puedes indicar qué atributo usar (el nombre en tu caso).

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 07/06/2015, 01:09
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Duda con treeSety y Comparable

Buenas,

Yo creo que sobreescribir el método equals puede dar lugar a muchos problemas y confusiones si posteriormente se intentan comparar objetos, ya que se considerará que dos Personas son iguales sólo por el hecho de que se llamen igual.

Aún más importante: dado que los set no permiten elementos repetidos, si se intenta introducir una persona que se llame igual que una existente, no se realizará la inserción:

http://docs.oracle.com/javase/7/docs...Set.html#add(E)

Cita:
Adds the specified element to this set if it is not already present. More formally, adds the specified element e to this set if the set contains no element e2 such that (e==null ? e2==null : e.equals(e2)). If this set already contains the element, the call leaves the set unchanged and returns false.
Sería más recomendable, por tanto, recorrer el set y hacer manualmente un equals del persona.getNombre(); para decidir si se elimina o no.

Un saludo
__________________
If to err is human, then programmers are the most human of us

Etiquetas: clase
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 16:46.