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:
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()); }
No, dije que no había ninguna utilidad en usar eso, cuando ya hay toda una batería de estructuras mucho más potentes disponibles.
Por favor, ¿cite un ejemplo en el que los [] sean más útiles que una lista, un vector, etc.?
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!
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.
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.