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

FileUpload con Primefaces

FileUpload con Primefaces

Si queremos subir imagenes a nuestra aplicación usaremos el componente FileUploadDebemos 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 imagenesEn 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. /*

NetBeans 8.0.1 en Español

NetBeans 8.0.1 disponible en español
http://bits.netbeans.org/netbeans/8.0.1/community/
Esta disponible NetBeans 8.0.1 en varios idiomas .


Puedes descargar la nueva versión y utilizar las nuevas características


Tutorial básico de aplicaciones Web con NetBeans parte 1

NetBeans ofrece un excelente soporte para el desarrollo de aplicaciones Web, en esta ocasión lo haremos utilizando el Framework Java Server Faces 2.0.
En el Menu Seleccionamos Nuevo->Proyecto y luego en Categorias Java Web y en tipo de Proyectos Web  Application

indicamos el nombre del proyecto



Seleccinamos el servidor Web, usamos GlassFish ya que este soporta EJB3.0 y JSF 2.0

Framework Java Server Faces

El IDE genera el esquelto del proyecto
Web Pages  almacenamos las paginas .html, xhtml, jsf, los archivos de recursos, los scripts .js, imagenesSource Packages   Son las clases Java Test Packages   Son las clases que usamos para los Test

Libraries    Tenemos las bibliotecas de Java y GlassFish necesarias para ejecutar la aplicación Web.Test Libraries    Están las bibliotecas usadas para los test 
Configuration Files   Archivos de configuración de la aplicación.

Ejecutamos la aplicación 

Esperamos que se inicie GlassFish y se cargue la aplicación
Este se ejecutara en nuestro servidor local y…