Llenar una lista con objetos
Resuelto
jojo@1989
Mensajes publicados
3
Estado
Miembro
-
jojo@1989 Mensajes publicados 3 Estado Miembro -
jojo@1989 Mensajes publicados 3 Estado Miembro -
Hola,
por favor necesito ayuda en java, he creado una clase User con un constructor y métodos y quiero crear una lista de tipo User. y para cada índice debo acceder a esas variables y sus métodos. esto es lo que hice:
creé un arreglo de tipo User
User user[]=new User[nbr];
for(int i=0;i<nbr;i++){
user[i]=new User();
}
ArrayList list = new ArrayList(Arrays.asList(user));
for(int i=0;i<nbr;i++){
list.add(user[i]);
}
¿está correcto lo que hice?
Configuración: Windows XP / Safari 535.7
por favor necesito ayuda en java, he creado una clase User con un constructor y métodos y quiero crear una lista de tipo User. y para cada índice debo acceder a esas variables y sus métodos. esto es lo que hice:
creé un arreglo de tipo User
User user[]=new User[nbr];
for(int i=0;i<nbr;i++){
user[i]=new User();
}
ArrayList list = new ArrayList(Arrays.asList(user));
for(int i=0;i<nbr;i++){
list.add(user[i]);
}
¿está correcto lo que hice?
Configuración: Windows XP / Safari 535.7
3 respuestas
-
Puedo ver que vienes de C ^^.
No usamos los "[]" en Java, en la javadoc ya tienes muchos contenedores, como los vectors, las listas, etc.
Luego para saber si lo que hiciste está bien, no hay nada mejor que probar.
Por último no entiendo por qué te haces un algoritmo de complejidad 0(2n) cuando podrías hacerlo de 0(n) ..
En resumen, ¿por qué no haces simplemente esto:ArrayList<User> list = new ArrayList<User>(); for(int i=0;i<nbr;i++){ list.add(new User()); }-
-
-
Sí, sí, he leído bien, dijiste "no uses [] en Java"
Ejemplo: el consumo de memoria de una lista de wrappers (Character, Integer...) es mucho más alto que el consumo de memoria de un array de tipos primitivos (char, int...)
Caso extremo: el tamaño en bytes es 1, así que un array de N bytes ocupa N+4 bytes (4 es el tamaño del objeto array), una List<Byte> va a ocupar al menos 5N+4 bytes (5 son los 4 bytes del objeto Byte, más el byte primitivo). Pérdida de memoria: factor 5 !!!
Y ni siquiera hablo de las máquinas de 64 bits, donde cada objeto ocupa 8 bytes...
Si no lo ves, los arrays están por todas partes en Java. Ejemplo: un String internamente es un char[], por eso son inmutables, porque los arrays también lo son...
Nota al pasar: Vector y ArrayList son lo mismo salvo que el primero usa un mecanismo de seguridad multiplataforma que no te servirá en el 99% de los casos, pero que hará que tu programa se cargue inútilmente!
No es porque programemos en Java que hay que hacer caso omiso de las optimizaciones; al contrario, cuando ves las monstruosidades que se pueden obtener con muy poco, ¡mejor aprender a optimizar! -
Mwahahahaha ¿desde cuándo se hace embarque con un lenguaje tan alto nivel como Java??
Me esperaba ese argumento, pero entonces dime:
¿lo haces todo tú mismo cuando programas en Java, y no usas nada de lo que se proporciona en la javadoc? (sí, todo lo que es implementación de estructuras, etc., no utilizas todas las funcionalidades de las estructuras en general, sin contar las llamadas a funciones, y la declaración de atributos y métodos que consumen espacio de memoria).
A partir del momento en que usas alto nivel, no piensas FORZOSA mente que no está optimizado, entonces tu discurso es muy bonito, pero no es válido para Java.... Lo siento
(Atención: no he dicho que haya que codificar como un cerdo, ¿eh?)
En cuanto a las utilizaciones Vector y List, no, no es lo mismo (pero de nuevo no has entendido que hablaba de utilidad)... No voy a decirle que use un TreeMap cuando solo necesita una lista ...
En fin. No polluted su topic, tuvo su respuesta. -
¿Desde cuándo se fabrica embarque con un lenguaje tan de alto nivel como Java?
Mira tu teléfono móvil, tu GPS, etc... ¡J2ME está en todas partes!
¡Decir que los arrays no se usan en Java es una aberración enorme!
Antes de hacer clases de alto nivel que usan a fondo la orientación a objetos, hace falta una base sólida, y eso pasa por clases de nivel más bajo cuyas operaciones elementales están optimizadas.
Pero tienes razón en un punto: esta discusión está totalmente fuera de tema respecto al tópico.
-
-
Si haces así, tu lista contendrá dos veces los elementos de la matriz.
Una primera vez porque llamas a tu constructor con Arrays.asList(user) como parámetro
Luego una segunda vez con el bucle for que añade los elementos uno por uno.
--
La confianza no excluye el control -
Primero gracias a todos ustedes por el tiempo que me han dedicado, y gracias por la solución, es lo que buscaba, (i'm happy)... es mi primer programa en el que uso listas.