Skip to main content

Consideraciones sobre un List


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&lt;&gt;();
            Usergroup grupousuarios = new Usergroup();

            for (int i = 0; i &lt; 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&lt;&gt;();                  
            for (int i = 0; i &lt; 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

Anonymous said…
normal que esperabas?
Anonymous said…
Hola brother desearia que me des una mano soy nuevo en la programacion de
java destopk
Anonymous said…
Hola brother desearia que me des una mano soy nuevo en la programacion de
java destopk
Daniel Zenobio said…
Estoy ejecutando el código y me sale un error no entiendo cuando colocas java.util.List list=new java.util.ArrayLislt<>(); ?????? como es lo de “<>();” que significa eso por favor?
Daniel Zenobio said…
Estoy ejecutando el código y me sale un error no entiendo cuando colocas java.util.List list=new java.util.ArrayLislt<>(); ?????? como es lo de “<>();” que significa eso por favor?
Daniel Zenobio said…
Hola pana, tienes un pequeƱo error en la sintaxis:
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.

Popular posts from this blog

JUnit con DataClassG

JUnit con DataClassG 0. ESQUEMA Services: Por cada beans crearemos una clase Services que se encargarĆ” de interactuar con el controller para realizar las operaciones de la base de datos. Se crearan los mĆ©todos insert, update,delete y los demas metodos para realizar las diversas operaciones. Test: Se crearĆ”n las clases para test de las clases Services. Form: Los formularios para la interactuar con el usuario. ProvinciasServices.java colocamos los mĆ©todos, insert, update,delete public class ProvinciasServices {    ProvinciasController provinciasController = new ProvinciasController();    public ProvinciasServices() {    }    public Boolean insert (Provincias provincias){        try{            if(provinciasController.insert(provincias)){              return tru...

Primefaces v13

 La versión nueva de primefaces v13.0 elimina el componente <p:repeat>  Consulte los cambios en  https://github.com/primefaces/primefaces/releases/tag/13.0.0 por lo tanto si necesita una solución similar considere utilizar  <p:carousel>  o  <ui:repeat> En la versión 13 genera una excepción