Foro Oficial de Java

NSlaver

Jack of all trades
16 Abr 2002
3,540
laneros, es viable sobrescribir el método equals de un arraylist? es que tengo un problema al momento de comparar nombres en una condición me arroja los que quiero pero en la otra no :/ entonces pensé si tendría que sobrescribir el método nombrado.

la idea es comparar los nombres de un arraylist con otro arraylist y dependiendo si no esta, me arroje el nombre de los que no se encuentran... el tamaño de estos arrays pueden diferir

echeme una mano, gracias de antemano :)
salu2!

Claro, debería ser mas claro con lo que se necesita, para ver si se puede hacer por herencia o simplemente modificando las clases que van en el Array.
 
  • Me gusta
Reacciones: 2 personas

Cofla25

Lanero Reconocido
5 Jun 2009
613
Claro, debería ser mas claro con lo que se necesita, para ver si se puede hacer por herencia o simplemente modificando las clases que van en el Array.

Gracias por responder.

Quiero crear objetos a partir de los nombres que no se encuentren en el otro array, me explico:

Supongamos que tengo dos arrays X<Ingrediente> y Y<Producto>. los dos se llenan de objetos de forma dinámica, X se llena de acuerdo a un JTable, y Y seria la que alojaría los nuevos objetos que se tendrían que crear con los nombres que no se encuentren en el array X y se agreguen en Y.
eso es todo :)
 

sábado

Castrochavista.
25 Ago 2010
6,134
Gracias por responder.

Quiero crear objetos a partir de los nombres que no se encuentren en el otro array, me explico:

Supongamos que tengo dos arrays X<Ingrediente> y Y<Producto>. los dos se llenan de objetos de forma dinámica, X se llena de acuerdo a un JTable, y Y seria la que alojaría los nuevos objetos que se tendrían que crear con los nombres que no se encuentren en el array X y se agreguen en Y.
eso es todo :)

Si quieres sobre escribir el método Equals, X debería ser de un tipo que extienda de List y en ese tipo haces override del método equals. Pero esa sería una solución innecesariamente complicada y tal vez un poco confusa si alguien más lee el código.

Técnicamente lo que quieres hacer no es una comparación de dos arreglos (que esa es la intención del equals) sino hacer un resta de dos objetos. yo te recomendaría crear un método nuevo y restar las dos listas, sin sobrescribir nada.
 
  • Me gusta
Reacciones: 4 personas

Cofla25

Lanero Reconocido
5 Jun 2009
613
Si quieres sobre escribir el método Equals, X debería ser de un tipo que extienda de List y en ese tipo haces override del método equals. Pero esa sería una solución innecesariamente complicada y tal vez un poco confusa si alguien más lee el código.

Técnicamente lo que quieres hacer no es una comparación de dos arreglos (que esa es la intención del equals) sino hacer un resta de dos objetos. yo te recomendaría crear un método nuevo y restar las dos listas, sin sobrescribir nada.

si, esa es la intencion, me podrias dar un pequeño ejemplo de como seria?

gracias por la idea :)
 

sábado

Castrochavista.
25 Ago 2010
6,134
si, esa es la intencion, me podrias dar un pequeño ejemplo de como seria?

gracias por la idea :)

Hay varías formas, Si los elementos de ambas listas son del mismo tipo puede usar el Remove all y te da el arreglo con las diferencias. Por ejemplo:

Código:
List<String> a = new ArrayList<String>();
List<String> b = new ArrayList<String>();

a.add("1");
a.add("2");
a.add("3");

b.add("1");

List<String> c = a.removeAll(b);

La lista c tendría los elementos de a que no estén en b, en ese ejemplo: "2" y "3".

Eso lo pondrías en un método Restar que reciba las dos listas y que retorne la lista c.
 

Cofla25

Lanero Reconocido
5 Jun 2009
613
ahhhhh listooo! gracias amigo, seria lo mas conveniente ya que quiero crear objetos con esos nombres en ese caso haría la creación del objeto y le seteo el nombre con ese atributo... muchas gracias amigo, ahí van ++
 

wrocha

Lanero Reconocido
11 Jul 2005
158
Gracias por responder.

Quiero crear objetos a partir de los nombres que no se encuentren en el otro array, me explico:

Supongamos que tengo dos arrays X<Ingrediente> y Y<Producto>. los dos se llenan de objetos de forma dinámica, X se llena de acuerdo a un JTable, y Y seria la que alojaría los nuevos objetos que se tendrían que crear con los nombres que no se encuentren en el array X y se agreguen en Y.
eso es todo :)

lo que podría hacer es crear una clase de la cual hereden Ingrediente y Producto, de tal forma que los pueda comparar, en esa clase nueva redefine el equals para definir la lógica de comparar un Ingrediente y un Producto, con eso ya puede usar los métodos de cada una de las listas para eliminar los repetidos, adjunto un ejemplo sencillo..

saludos
 

Archivos adjuntos

  • src.zip
    1.3 KB · Visitas: 56
  • Me gusta
Reacciones: 2 personas

Cofla25

Lanero Reconocido
5 Jun 2009
613
lo que podría hacer es crear una clase de la cual hereden Ingrediente y Producto, de tal forma que los pueda comparar, en esa clase nueva redefine el equals para definir la lógica de comparar un Ingrediente y un Producto, con eso ya puede usar los métodos de cada una de las listas para eliminar los repetidos, adjunto un ejemplo sencillo..

saludos

muchas gracias amigo, también aclaro mas el panorama...
le van k++
 

Cofla25

Lanero Reconocido
5 Jun 2009
613
estas extendiendo de la clase donde esta el arraylist?

no, lo estoy haciendo bajo la arquitectura mvc por lo tanto tengo los arrays en las clases de control, porque la pregunta?
lo que he hecho hasta ahora es escribir la lógica en un método en estas clases control y llamarlo cuando lo necesito.
saludos
 

Razor.!

Lanero Difunto
In Memoriam
22 Feb 2006
3,981
no, lo estoy haciendo bajo la arquitectura mvc por lo tanto tengo los arrays en las clases de control, porque la pregunta?

si, modelo - vista - controlador es hoy en día la mejor arquitectura para llevar a cabo un proyecto de desarrollo..


lo que he hecho hasta ahora es escribir la lógica en un método en estas clases control y llamarlo cuando lo necesito

lo mismo hace la gran mayoría :)


opinando para la solución de tu problema he leído las opciones que te han dado, y me parece que la opinión de sábado tiene una muy buena logica a demas de un buen argumento para usarlo.


Técnicamente lo que quieres hacer no es una comparación de dos arreglos (que esa es la intención del equals) sino hacer un resta de dos objetos. yo te recomendaría crear un método nuevo y restar las dos listas, sin sobrescribir nada.
 

Cofla25

Lanero Reconocido
5 Jun 2009
613
si, modelo - vista - controlador es hoy en día la mejor arquitectura para llevar a cabo un proyecto de desarrollo..




lo mismo hace la gran mayoría :)


opinando para la solución de tu problema he leído las opciones que te han dado, y me parece que la opinión de sábado tiene una muy buena logica a demas de un buen argumento para usarlo.

Gracias por tu opinión, me hace confiar aún mas, es lo que hecho y hasta ahora todo bien :)
Gracias a todos.
 

Cofla25

Lanero Reconocido
5 Jun 2009
613
Hay varías formas, Si los elementos de ambas listas son del mismo tipo puede usar el Remove all y te da el arreglo con las diferencias. Por ejemplo:

Código:
List<String> a = new ArrayList<String>();
List<String> b = new ArrayList<String>();

a.add("1");
a.add("2");
a.add("3");

b.add("1");

List<String> c = a.removeAll(b);

La lista c tendría los elementos de a que no estén en b, en ese ejemplo: "2" y "3".

Eso lo pondrías en un método Restar que reciba las dos listas y que retorne la lista c.

muchachos el metodo removeAll retorna un boolean :/

Edit: Solucionado ;)
 

alex02

Lanero Reconocido
10 Jun 2006
178
Saludos

Tengo una pregunta, estoy desarrollando una aplicacion en javaEE corriendo en jboss 7 y quiero usar un cliente standalone desarrollado con swing, mi pregunta es como capturo los mensajes de error que se originan en el servidor, por ejemplo un error al conectarse a la base de datos, el log del servidor me muestra el error pero como hago para que el error sea presentado en el cliente y lo pueda ver el usuario.

Enviado desde mi GT-I8190L usando Tapatalk 2
 

sábado

Castrochavista.
25 Ago 2010
6,134
Saludos

Tengo una pregunta, estoy desarrollando una aplicacion en javaEE corriendo en jboss 7 y quiero usar un cliente standalone desarrollado con swing, mi pregunta es como capturo los mensajes de error que se originan en el servidor, por ejemplo un error al conectarse a la base de datos, el log del servidor me muestra el error pero como hago para que el error sea presentado en el cliente y lo pueda ver el usuario.

Enviado desde mi GT-I8190L usando Tapatalk 2

¿quieres que tu aplicación Stand Alone capture los errores que arroja la aplicación en Jboss 7?

Respuesta corta: no se puede.

Respuesta larga: no se puede al menos en tiempo real. Podrías capturar los errores en el server y lanzar alertas a la aplicación stand alone por medio de alguna base de datos o archivos de notificación.
 

alex02

Lanero Reconocido
10 Jun 2006
178
¿No hay forma de enviarle las excepciones generadas por los ejb's a la aplicacion standalone?

Enviado desde mi GT-I8190L usando Tapatalk 2
 

sábado

Castrochavista.
25 Ago 2010
6,134
¿No hay forma de enviarle las excepciones generadas por los ejb's a la aplicacion standalone?

Enviado desde mi GT-I8190L usando Tapatalk 2

No porque son contenedores distintos, pero si puedes avisarle a aplicaciones de terceros si tienes algún mecanismo de interoperabilidad entre los aplicativos.

Por ejemplo, tu stand alone podría tener un demonio corriendo cada 5 minutos en tu máquina revisando un log de fallos del JBoss y al momento en que encuentre alguno reportar el error. Pero desde el Catch de un fallo en la aplicación no puedes hacer algo como propagar la excepción a tu otra app.
 
  • Me gusta
Reacciones: 2 personas