Llenar una lista con objetos

Resuelto
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

3 respuestas

matthoffman Mensajes publicados 404 Fecha de registro   Estado Miembro Última intervención   47
 
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()); } 
3
KX Mensajes publicados 19031 Estado Moderador 3 020
 
No usamos los [] en Java? ¡Ah pues eso es una novedad, qué novedad!!!
0
matthoffman Mensajes publicados 404 Fecha de registro   Estado Miembro Última intervención   47
 
Dije "no se puede usar los [] en Java" ?
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.?
0
KX Mensajes publicados 19031 Estado Moderador 3 020
 
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!
0
matthoffman Mensajes publicados 404 Fecha de registro   Estado Miembro Última intervención   47
 
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.
0
KX Mensajes publicados 19031 Estado Moderador 3 020
 
¿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.
0
KX Mensajes publicados 19031 Estado Moderador 3 020
 
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
0
jojo@1989 Mensajes publicados 3 Estado Miembro
 
hola, sí, veo gracias un montón
0
jojo@1989 Mensajes publicados 3 Estado Miembro
 
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.
0