
Comparación de objetos
Publicado por Andrew (9 intervenciones) el 26/10/2013 21:21:48
Buenas, a ver si sé explicarme.
Lo que yo quiero saber es si dos objetos pueden ser comparados con un simple "==" sin que dé prblemas. Pongo un ejemplo para ilustrarlo:
-Imaginemos que tenemos dos vectores, o listas. En el ejemplo usaré ArrayLits para darle algo más de generalidad, y porque son los que suelo utilizar yo.
ArrayList A1;
ArrayList A2;
Durante el programa, los inicializo, y los lleno de objetos. De forma dinámica, los objetos van entrando y saliendo de estas listas durante el programa.
Llegado un punto, quiero comproba si cierto objeto de A1, en la posición "a", es el mismo que uno de A2, en la posición "b". ¿Se puede hacer una comparación directa? Del tipo:
¿O es mejor utilizar alguna otra función para compararlos?
-En la misma línea, si uno de los objetos en cuestión quiere saber si él mismo es cierto objeto de la lista, ¿se puede hacer esta comparación?:
if (this == A1.get(a)){
Cosas();
}
-Por último. El método get() de los ArrayList me devuelve un Object, independientemente de lo que esté dentro (ya que en un ArrayList puedes meter cualquier tipo de objetos, e incluso tipos básicos, mezclados). ¿Cómo puedo comprobar si esos dos objetos (los resultanes de A1.get(a) y A2.get(b)) son del mismo tipo? Quiero decir, yo creo varias clases, y tengo una que es Tipo1 y otra que es Tipo2. Meto varios objetos de ambas en los Arrays, y luego quiero comprobar si dos objetos concretos son ambos de Tipo1 o de Tipo2, o son distintos. Bueno, ya sé que con algún parámetro que se exista en las clases puedo hacerlo de forma indirecta, pero quería saber si existía una función específica que te diga si dos objetos son del mismo tipo (instancias de la misma clase, vaya).
Espero no haberme complicado mucho, y que se me entienda. Volveré a explicarlo si hace falta a quien me lo pregunte amablemente.
Muchas gracias.
Lo que yo quiero saber es si dos objetos pueden ser comparados con un simple "==" sin que dé prblemas. Pongo un ejemplo para ilustrarlo:
-Imaginemos que tenemos dos vectores, o listas. En el ejemplo usaré ArrayLits para darle algo más de generalidad, y porque son los que suelo utilizar yo.
ArrayList A1;
ArrayList A2;
Durante el programa, los inicializo, y los lleno de objetos. De forma dinámica, los objetos van entrando y saliendo de estas listas durante el programa.
Llegado un punto, quiero comproba si cierto objeto de A1, en la posición "a", es el mismo que uno de A2, en la posición "b". ¿Se puede hacer una comparación directa? Del tipo:
1
2
3
4
5
6
7
8
9
if (A1.get(a) == A2.get(b)) {
Cosas();
}
/* para los que no estén familiarizados con ArrayList,
si fuera un Array normal sería lo mismo que decir:
if (A1[a] == A2[b]) {
Cosas();
}
*/
¿O es mejor utilizar alguna otra función para compararlos?
-En la misma línea, si uno de los objetos en cuestión quiere saber si él mismo es cierto objeto de la lista, ¿se puede hacer esta comparación?:
if (this == A1.get(a)){
Cosas();
}
-Por último. El método get() de los ArrayList me devuelve un Object, independientemente de lo que esté dentro (ya que en un ArrayList puedes meter cualquier tipo de objetos, e incluso tipos básicos, mezclados). ¿Cómo puedo comprobar si esos dos objetos (los resultanes de A1.get(a) y A2.get(b)) son del mismo tipo? Quiero decir, yo creo varias clases, y tengo una que es Tipo1 y otra que es Tipo2. Meto varios objetos de ambas en los Arrays, y luego quiero comprobar si dos objetos concretos son ambos de Tipo1 o de Tipo2, o son distintos. Bueno, ya sé que con algún parámetro que se exista en las clases puedo hacerlo de forma indirecta, pero quería saber si existía una función específica que te diga si dos objetos son del mismo tipo (instancias de la misma clase, vaya).
Espero no haberme complicado mucho, y que se me entienda. Volveré a explicarlo si hace falta a quien me lo pregunte amablemente.
Muchas gracias.
Valora esta pregunta


0