Foros del Web » Programación para mayores de 30 ;) » Java »

Objetos + arraylist

Estas en el tema de Objetos + arraylist en el foro de Java en Foros del Web. wnas, tengo el siguiente código en el cual asigno variables a un objeto y posteriormente las añado a un arraylist, pero no se como hacer ...
  #1 (permalink)  
Antiguo 19/01/2009, 09:21
 
Fecha de Ingreso: julio-2008
Mensajes: 48
Antigüedad: 15 años, 9 meses
Puntos: 0
Objetos + arraylist

wnas, tengo el siguiente código en el cual asigno variables a un objeto y posteriormente las añado a un arraylist, pero no se como hacer que el arraylist no se quede solo con el último elemento que lee, por favor si alguien puede ayudarme se lo agradeceria muchisimo.

public ArrayList getDescription(){

Heading h = new Heading();
i_Query = "SELECT Code,Description FROM Headings WHERE Type='G';";
conexion.ExecuteQuery(i_Query);
while(conexion.getNext(conexion.getResulSet())){
heading.i_HeadingsDescription = conexion.getString("Description");
heading.i_CodeHeading = conexion.getInt("Code");
i_Head.add(heading);
}


for (int j=0; j<i_Head.size();j++){

h = (Heading)i_Head.get(j);
System.out.println("i_CodeHeading: "+h.i_CodeHeading +"i_Description:" +h.i_HeadingsDescription);

}

return i_Head;
}
  #2 (permalink)  
Antiguo 19/01/2009, 09:27
 
Fecha de Ingreso: enero-2009
Mensajes: 26
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: Objetos + arraylist

Tienes que poner la creación de la variable Header:

Heading h = new Heading(); (por lo menos el h = new Heading();)

dentro del bucle while para "crear una nueva variable" en cada iteración (y cambiar la posición de memoria a donde apunta).

Ahora estas añadiendo una referencia a la misma posición de memoria en cada uno de los elementos del array, por eso, cuando modificas la variable "h", se modifica en todas las posiciones del array.
  #3 (permalink)  
Antiguo 19/01/2009, 10:17
 
Fecha de Ingreso: julio-2008
Mensajes: 48
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Objetos + arraylist

Muchas gracias por la ayuda pero creo q no va a ser ese el único problema xq me sigue pasando igual, te pongo a continuación el código de toda la clase xq seguro q estoy metiendo la pata en algun sitio más. Pero muchisimas gracias por tu ayuda.

public class Heading {
Conexion conexion;
Heading heading;
private String i_Query;
private String i_HeadingsDescription;
private int i_CodeHeading;
private ArrayList i_Head;

/**
* Creates a new instance of Heading
*/
public Heading() {
conexion = new Conexion();


}
public Heading(Conexion con) {
conexion = con;
heading = new Heading();
i_Head = new ArrayList();
}
public ArrayList getDescription(){
Heading h;

i_Query = "SELECT Code,Description FROM Headings WHERE Type='G';";
conexion.ExecuteQuery(i_Query);
while(conexion.getNext(conexion.getResulSet())){
h = new Heading();
heading.i_HeadingsDescription = conexion.getString("Description");
heading.i_CodeHeading = conexion.getInt("Code");
i_Head.add(heading);

}

for (int j=0; j<i_Head.size();j++){

h = (Heading)i_Head.get(j);
System.out.println("i_CodeHeading: "+h.i_CodeHeading +"i_Description:" +h.i_HeadingsDescription);

}


return i_Head;
}
}
  #4 (permalink)  
Antiguo 19/01/2009, 10:30
 
Fecha de Ingreso: enero-2009
Mensajes: 26
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: Objetos + arraylist

Sorry, es heading y no h la variable que debes poner dentro del while.
  #5 (permalink)  
Antiguo 19/01/2009, 11:11
 
Fecha de Ingreso: julio-2008
Mensajes: 48
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Objetos + arraylist

ya funciona bien, muchisimas gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:05.