Foro de elhacker.net

Programación => Java => Mensaje iniciado por: JonaLamper en 7 Mayo 2017, 01:40 am



Título: Saber si un array contiene un objeto propio
Publicado por: JonaLamper en 7 Mayo 2017, 01:40 am
Muy buenas noches,

¿Hay alguna forma de saber en Java si un array contiene un determinado objeto? El objeto no es de ninguna clase primitiva, es un objeto de una clase mía. Lo que busco es una especie de array.indexOf en javascript.


Muchas gracias  ;D


Título: Re: Saber si un array contiene un objeto propio
Publicado por: ivancea96 en 7 Mayo 2017, 02:16 am
Si primero lo conviertes a una List, por ejemplo, sí tendrás métodos, como contains.
Si el array está ordenado, puedes usar Arrays.binarySearch[/i].

Si ninguna de estas te conviene, siempre puedes hacer la función para buscar.


Título: Re: Saber si un array contiene un objeto propio
Publicado por: Chuidiang en 7 Mayo 2017, 07:10 am
Hola:

Para convertir a List y usar el metodo indexOf, puedes usar la clase Arrays de java

java.util.Arrays.asList(theArray).indexOf(o)

También hay que decirle a java de alguna forma cuando dos objetos de tu clase son iguales. Si no dices nada, por defecto serán iguales si son la misma instancia y serán distintos si son instancias distintas, aunque el contenido sea igual.

Código:
TuClase a = new TuClase(1,2,3)
TuClase b = new TuClase(1,2,3)
// a == b es false y a.equals(b) también es false.

Para indicar cuando son iguales, debes definir el método equals() en tu clase (el mismo IDE que uses eclipse, netbeans, idea, .... lo hacen si se lo pides).

Saludos.


Título: Re: Saber si un array contiene un objeto propio
Publicado por: cunian en 7 Mayo 2017, 19:27 pm
Hola amigo, Existe algo que se llama Api reflection java, Es muy poca conocida pero esa esa la solución a tu problema. Investiga un poco lo que te dije y veras lo importante que es esa Api


Título: Re: Saber si un array contiene un objeto propio
Publicado por: animanegra en 8 Mayo 2017, 19:57 pm
¿Contiene el mismo objeto o un objeto con el mismo valor en sus atributos? Es que no es lo mismo.