elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  remove no funciona
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: remove no funciona  (Leído 4,015 veces)
Ruusa

Desconectado Desconectado

Mensajes: 32


Ver Perfil
remove no funciona
« en: 17 Marzo 2021, 00:33 am »

Hola buenas noches. Tengo un problema para eliminar elementos de un arraylist.
Cuando llamo al metodo remove no funciona. No borra el elemento deseado.

Código
  1. boton.addActionListener(new ActionListener() {
  2. public void actionPerformed(ActionEvent e) {
  3. try {
  4. if (indice < miControl.jugador(nombreJ).cartasEnMano.size()) {
  5. r=indice;
  6. ImageIcon imagen = new
  7. ImageIcon(miControl.jugador(nombreJ).cartasEnMano.get(indice)+".jpg");
  8. cartaNum.setText("Carta numero: "+ indice);
  9. btn.setIcon(new
  10. ImageIcon(imagen.getImage().getScaledInstance(btn.getWidth(),btn.getHeight(),Image.SCALE_SMOOTH)));
  11. indice++;
  12.  
  13. }else {
  14. indice=0;
  15. r=0;
  16.  
  17. }
  18.  
  19. }
  20.  
  21.  
  22. catch (RemoteException e1) {
  23. // TODO Auto-generated catch block
  24. e1.printStackTrace();
  25. }
  26.  
  27. }
  28. });
  29.  
  30. boton3.addActionListener(new ActionListener() {
  31. public void actionPerformed(ActionEvent e) {
  32. try {
  33.  
  34. miControl.tirarCarta(r,miControl.jugador(nombreJ));
  35. indice=0;
  36. r=0;
  37. }
  38.  
  39. else {
  40.  
  41. }
  42. }
  43.  
  44.  
  45.  
  46. public void tirarCarta( int op, Jugador j) throws RemoteException {
  47. //op va a ser la carta a tirar y jugador va a ser el jugador que la tira
  48. mesa.add(j.cartasEnMano.get(op));
  49. j.cartasEnMano.remove(j.cartasEnMano.get(op));
  50.  
  51.  
  52. }


Si alguien me puede ayudar se lo agradeceria

MOD: Etiqueta GeSHi


« Última modificación: 17 Marzo 2021, 00:35 am por MCKSys Argentina » En línea

K-YreX


Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: remove no funciona
« Respuesta #1 en: 18 Marzo 2021, 07:10 am »

Supongo que <cartasEnMano> es un ArrayList<> de algún tipo de objeto que has creado tú, no?

Cuando se utiliza ArrayList.remove(Object o), se elimina el objeto i del array que cumpla Objects.equals(o, array.get(i)). En resumen, necesitas sobreescribir el método equals() para determinar cuándo dos objetos son iguales ya que si no lo haces sólo serán iguales cuando sean el mismo objeto (misma dirección de memoria).

Otra solución más sencilla si ya tienes el índice es usar ArrayList.remove(int index).
Código
  1. j.cartasEnMano.remove(op)
Además de más sencillo, es más seguro pues te aseguras de tirar exactamente la misma y no otra que sea igual a esa.

PD: Utiliza las etiquetas de Código GeSHi para el código ya sea abriendo el desplegable que se llama "Código GeSHi" y eligiendo Java o escribiendo directamente:
[code=java]
Tu código Java aquí
[/code]


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: remove no funciona
« Respuesta #2 en: 18 Marzo 2021, 13:32 pm »

Ah @Ruusa se le habla un par de veces sobre el GeSHI

En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
Ruusa

Desconectado Desconectado

Mensajes: 32


Ver Perfil
Re: remove no funciona
« Respuesta #3 en: 19 Marzo 2021, 23:16 pm »

Supongo que <cartasEnMano> es un ArrayList<> de algún tipo de objeto que has creado tú, no?

Cuando se utiliza ArrayList.remove(Object o), se elimina el objeto i del array que cumpla Objects.equals(o, array.get(i)). En resumen, necesitas sobreescribir el método equals() para determinar cuándo dos objetos son iguales ya que si no lo haces sólo serán iguales cuando sean el mismo objeto (misma dirección de memoria).

Otra solución más sencilla si ya tienes el índice es usar ArrayList.remove(int index).
Código
  1. j.cartasEnMano.remove(op)
Además de más sencillo, es más seguro pues te aseguras de tirar exactamente la misma y no otra que sea igual a esa.

PD: Utiliza las etiquetas de Código GeSHi para el código ya sea abriendo el desplegable que se llama "Código GeSHi" y eligiendo Java o escribiendo directamente:
[code=java]
Tu código Java aquí
[/code]



Hola muchas gracias. Intente eso y sigue sin funcionar. Nose que esta pasando. no me anda ningun metodo del arraylist cuando lo llamo dentro de ese metodo. Es muy raro
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
How to remove types « 1 2 »
Programación Visual Basic
pgs.lancelot 12 5,842 Último mensaje 24 Noviembre 2011, 19:08 pm
por Swellow
How can i remove ObjPtr ?
Programación Visual Basic
pgs.lancelot 0 1,552 Último mensaje 22 Noviembre 2011, 23:33 pm
por pgs.lancelot
Should I remove it
Noticias
wolfbcn 0 1,409 Último mensaje 17 Febrero 2013, 14:58 pm
por wolfbcn
remove vat « 1 2 »
Windows
Disalito 13 12,676 Último mensaje 18 Octubre 2013, 12:58 pm
por Disalito
[C++] Importar Remove(); [SOLUCIONADO]
Programación C/C++
DeMoNcRaZy 3 2,449 Último mensaje 17 Mayo 2015, 17:56 pm
por DeMoNcRaZy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines