Java - auto añadirse a un arraylist

 
Vista:
sin imagen de perfil
Val: 89
Ha disminuido su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

auto añadirse a un arraylist

Publicado por jose maria (85 intervenciones) el 13/08/2016 17:20:48
hola, tengo la clase A y B
en A tengo un array donde añado objetos B

private ArrayList <B> b;
.....
b=new ArrayList <B>();
public void ingresa B (B clase)
{
b.add (clase);
}

lo que me gustaría hacer ahora desde ese mismo método es llamar al método en B que añade objetos A y añadir el objeto desde el que se añadió ese objeto B (¿me explico?) pero ¿que código utilizo para identificar ese objeto o que el mismo se añada al arraylist?
gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 214
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

auto añadirse a un arraylist

Publicado por juanki (131 intervenciones) el 13/08/2016 18:45:49
Hola

A ver, en la clase A tienes una lista de objetos de tipo B. Y ¿En la clase B tienes un lista de objetos de clase A?

De todas formas, dentro de un objeto tienes una referencia a si mismo: this.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 89
Ha disminuido su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

auto añadirse a un arraylist

Publicado por jose maria (85 intervenciones) el 13/08/2016 20:02:04
this lo conozco pero no se a que contexto te refieres....
aver, lo que yo querria seria una cosa asi...

1
2
3
4
5
public void ingresa B (B clase)
{
b.add (clase);
B.ingresaA (a)
}
pero claro, ¿que a? ¿como hago para que si eso ocurre en a5 sea a5 la que se ingresa en ese array?
seria algo asi?
b.ingresaA(this.a);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 214
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

auto añadirse a un arraylist

Publicado por juanki (131 intervenciones) el 13/08/2016 20:43:35
Hola

Pues con B.ingresaA (this); Osea, objeto en el que estás se pasa como parámetro a ingresaA.

Una recomendación personal y que te ahorrará muchos problemas en el futuro, acostúmbrate a usar nombres descriptivos, A y B no indican qué son, es mucho mejor poner un nombre apropiado y que de a entender de qué se trata. Yo lo hago hasta para los ejemplos más sencillos.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 89
Ha disminuido su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

auto añadirse a un arraylist

Publicado por jose maria (85 intervenciones) el 13/08/2016 21:40:37
bueno, te dejo aquí un código de prueba....no consigo que me salga lo que dices....

Clase A

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.*;
public class A
{
    private String dato;
    protected ArrayList <B> b;
    public A(String palabra)
    {
        dato=palabra;
        b=new ArrayList <B>();
    }
 
    public void ingresaB (B clase)
    {
        b.add (clase);
        b.get(clase).ingresaA (this);//esta parte no compila y es la que me interesa
    }
}

Clase B

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.*;
public class B
{
    private String dato;
    private ArrayList <A> a;
    public B(String palabra)
    {
        dato=palabra;
        a=new ArrayList <A>();
    }
 
   public void ingresaA (A clase)
    {
        a.add (clase);
    }
}

gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 214
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

auto añadirse a un arraylist

Publicado por juanki (131 intervenciones) el 13/08/2016 23:23:57
Hola

Antes de seguir te pregunto ¿Qué es lo que quieres hacer? Por que me da que te has liado un poco, la clase A tiene un array de la clase B y la clase B tiene un array de la clase A.

Pero cada objeto tendrá su propio array y a cada objeto le añades un objeto, por lo que el array solo tendrá uno. A uno de B y B uno de A.

O yo me he liado y no comprendí nada o es un lío.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 89
Ha disminuido su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

auto añadirse a un arraylist

Publicado por jose maria (85 intervenciones) el 13/08/2016 23:54:54
abr, dentro de lo que es el ejemplo, esa es la idea....
yo genero objetos de A
a1,a2,a3,a4,a5.....
y de B
b1,b2,b3,b4.....
ahora bien, lo que deseo es que cuando , por ejemplo, en a5 meta a b3, a5 se "autometa" en el array de b3, pero claro, no sabemos que objeto de A o de B hara eso....
también debe pasar al revés....
¿me explico?
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

auto añadirse a un arraylist

Publicado por Marcelo (47 intervenciones) el 14/08/2016 00:43:46
Si no me equivoco tu código debería ser algo asi.

En clase A

1
2
3
4
Public void agregarB(ClaseB b){
    arrayb.add (b);
    b.agregarA (this);
}

En clase B

1
2
3
4
public void agregarA (ClaseA a){
   arraya.add (a);
   a.agregarB (this);
}

Espero te sea util,

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

auto añadirse a un arraylist

Publicado por Marcelo (47 intervenciones) el 14/08/2016 03:22:06
Acabo de ver que hay un pequeño error en el código que publique, no se debe llamar a la función de agregar dentro debido a que va a quedar en loop, simplemente se debe agregar directamente en la lista del objeto recibido por parámetro


En clase A

1
2
3
4
Public void agregarB(ClaseB b){
arrayb.add (b);
b.getArrayA().add (this);
}

En clase B

1
2
3
4
public void agregarA (ClaseA a){
arraya.add (a);
a.getArrayB().add (this);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 89
Ha disminuido su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

auto añadirse a un arraylist

Publicado por jose maria (85 intervenciones) el 15/08/2016 12:46:03
bueno, gracias, tus consejos me han guiado....
la cosa es que no queda de la misma forma....
he cambiado los nombre para crear menos confusión....

Primera Clase

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.*;
public class Primera
{
    protected ArrayList <Segunda> datode2;
    public Primera ()
    {
        datode2=new ArrayList <Segunda>();
    }
 
    public void IngresaSegunda(Segunda clase)
    {
       datode2.add (clase);
       clase.IngresaPrimera(this);
    }
 
}

Segunda Clase

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.*;
public class Segunda
{
  protected ArrayList <Primera> datode1;
  public Segunda()
    {
        datode1=new ArrayList <Primera>();
    }
 
  public void IngresaPrimera (Primera clase)
  {
        datode1.add (clase);
  }
 
  public void presentarenpantalla()
  {
    for (int i = 0; i <=datode1.size() - 1; i++)
        {
           System.out.println(datode1.get(i));
        }
  }
}

si se agrega, pero cuando le digo a la segunda clase que presente en pantalla me da la direccion de memoria, ose:
Primera@1070924
¿como hago ahora para que esto sea un nombre "legible"
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar