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

Apache NetBeans

Apache NetBeans
https://wiki.apache.org/incubator/NetBeansProposal

Si, algo que se esperaba desde hace muchos años, una liberación de NetBeans, para convertirlo en un IDE más abierto, y que permita mayor contribución de la comunidad y de otras empresas, ya inicio su primera etapa en la incubadora de la Fundación Apache.
Las implicaciones que esto conlleva son múltiples por una parte esta la evolución de NetBeans, al permitir que más contribuyentes puedan aportar a sus mejoras, también garantiza que aquellas instituciones no sientan que es una sola organización la que controla la evolución. A las comunidades les permite sentirse que participan de un proyecto con todas las garantías que ofrece la Fundación Apache.

Muchos pensaran que Oracle esta dejando morir el proyecto, la realidad es diferente, hay muchos ingenieros que están participando del proyecto en la fundación Apache.
Es una noticia excelente para los desarrolladores, instituciones, empresas que utilizan NetBeans , se estima qu…

Un ejemplo sencillo de Refactorización y Genericos

Un ejemplo sencillo de Refactorización y Genericos

public class Refactorizador<K, V> {

    public V copyFromBeans(K k, V v) {
        try {
            Class claseK = k.getClass();
            Class claseV = v.getClass();

            Method[] metodosK = claseK.getMethods();

            for (Method method : metodosK) {
                if (isGetter(method)) {
                    Method metodoGetK = claseK.getDeclaredMethod(method.getName());
                    Method metodoSetV = claseV.getDeclaredMethod(changeGetBySet(method.getName()), method.getReturnType());
                    metodoSetV.invoke(v, metodoGetK.invoke(k));
                }

            }

        } catch (Exception e) {
            System.out.println("refactorizador() " + e.getLocalizedMessage());
        }
        return v;
    }

     public  boolean isGetter(Method method) {

        if (!method.getName().startsWith("get")) {
            return false;
        }
        if (method.getName().startsWith("getCla…

FileUpload con Primefaces

FileUpload con Primefaces

Si queremos subir imagenes a nuestra aplicación usaremos el componente FileUpload Debemos realizar los siguientes pasos:
Agregar al archivo web.xml

   <filter>        <filter-name>PrimeFaces FileUpload Filter</filter-name>        <filter-class>            org.primefaces.webapp.filter.FileUploadFilter        </filter-class>    </filter>    <filter-mapping>        <filter-name>PrimeFaces FileUpload Filter</filter-name>        <servlet-name>Faces Servlet</servlet-name>    </filter-mapping>



Crear dentro de resources el directorio donde deseamos almacenar las imagenes En este ejemplo: resources/fotos/clinicas y agregue una imagen llamada fotos.png que se usará como imagen inicial.



En JSFUtil u otro @Named Beans que usemos agregamos tres métodos uno para obtener el path de la aplicación web , otro para obtener el path relativo a /fotos/clinicas y el otro para copiar los archivos. /*