Comprobar si un objeto ya existe en un vector

kerae
04 de Febrero del 2004
Hola,
me gustaría recibir consejo sobre este programa:

1. Tengo que almacenar el nombre, los apellidos y el número de identidad de varias personas.

2. Para ello creo la clase PersonTest.

3. Uso un vector llamado person, en donde voy a ir guardando las personas.

4. Cuando voy insertando los datos, debo comprobar que no hay nadie que tenga el mismo nombre o número de identidad. Y aquí está el problema. Yo hago lo siguiente:

if(!person.contains(((PersonTest)person.get(counter)).getInfo()))
person.add(newPerson);

donde getInfo devuelve el nombre completo y el número de identidad. Sin embargo no funciona.

No sé si mi razonamiento es del todo correcto, por eso me gustaría saber una forma de hacer esto.

Gracias!
Un saludo

chuidiang
04 de Febrero del 2004
El metodo contains() llama al metodo equals() de object para saber si lo tiene o no. Este metodo equals() por defecto comprueba si ambas instancias son la misma (es decir, si vienen del mismo new).

Redefine en PersonTest el metodo equals() de la clase Object y hazle devolver true si tienen el mismo nombre o numero de identidad.

Luego basta con

PersonTest unaPersonTest = new PersonTest (...);
if (person.contains (unaPersonTest))
{
// esta dentro.
}

Se bueno.