Consideraciones sobre List<myclase> l = new ArrayList<>();
Definimos dos clases
public class User
String username;
String usuario;
String idgrupousuario;
Usergroup grupousuarios; //clase Usergroup
public User() {
}
public User(String username, String usuario, String idgrupousuario) {
this.username = username;
this.usuario = usuario;
this.idgrupousuario = idgrupousuario;
}
//set y get
}
public class Usergroup {
String idgrupo;
String grupo;
public Usergroup() {
}
public Usergroup(String idgrupo, String grupo) {
this.idgrupo = idgrupo;
this.grupo = grupo;
}
//SET Y GET
}
SituaciĆ³n 1:
Declaramos el objeto gruposusuarios fuera del ciclo.
try {
List<user> list = new ArrayList<>();
Usergroup grupousuarios = new Usergroup();
for (int i = 0; i < 3; i++) {
User u = new User("user" + i, "name" + i, "admin" + i);
grupousuarios.setIdgrupo("admin" + i);
grupousuarios.setGrupo("administrador" + i);
u.setGrupousuarios(grupousuarios);
list.add(u);
}
for (User u1 : list) {
System.out.println(" " + u1.getUsername() + " " + u1.getUsuario() + " " + u1.getGrupousuarios().getIdgrupo() + " " + u1.getGrupousuarios().getGrupo());
}
//
} catch (Exception ex) {
System.out.println(" Error UsuariosPersistencia" + ex);
}
Si lo ejecutamos notaremos que se repetirĆ” el ultimo objeto gruposusuarios en todos los elementos de la lista. Generando una salida incorrecta.
Podemos ver lo que ocurre con el Depurador de NetBeans
Primero agregamos el primer objeto de la clase gruposusuarios
Ahora cuando agregamos el segundo objeto, este reemplaza a todos los anteriores en la lista.
SituaciĆ³n 2:
Declaramos el objeto gruposusuarios dentro del ciclo, asĆ no se repetirĆ” el valor del ultimo objeto en toda la lista.
try {
List<user> list = new ArrayList<>();
for (int i = 0; i < 3; i++) {
User u = new User("user" + i, "name" + i, "admin" + i);
Usergroup grupousuarios = new Usergroup();
grupousuarios.setIdgrupo("admin" + i);
grupousuarios.setGrupo("administrador" + i);
u.setGrupousuarios(grupousuarios);
list.add(u);
}
for (User u1 : list) {
System.out.println(" " + u1.getUsername() + " " + u1.getUsuario() + " " + u1.getGrupousuarios().getIdgrupo() + " " + u1.getGrupousuarios().getGrupo());
}
} catch (Exception ex) {
System.out.println(" Error UsuariosPersistencia" + ex);
}
En el depurador, podemos observar que los valores de gruposusuarios se almacenan correctamente.
Comments
java destopk
java destopk
List l=new ArrayList<>();
deberia ser:
List l=new ArrayList(); //es suficiente
Si haces el codigo siguiendo esa sintaxis esta bien igual...Por lo demas esta bien.