Remplir une liste par des objets

Résolu/Fermé
jojo@1989 Messages postés 3 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 9 janvier 2012 - 9 janv. 2012 à 14:45
jojo@1989 Messages postés 3 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 9 janvier 2012 - 9 janv. 2012 à 21:10
Bonjour,
svp j'ai besoin de l'aide en java, j'ai créer une classe User avec un constructeur et des méthodes et je veux créer une liste de type User. et pour chaque indice je dois accéder à ces variables et ses méthodes . voila ce que j'ai fait:
j'ai crée un tableau de type 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 ce que c'est correct ce que j'ai fait?

A voir également:

3 réponses

matthoffman Messages postés 405 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 22 janvier 2013 47
Modifié par matthoffman le 9/01/2012 à 15:09
Toi ca se voit que tu viens du C ^^.

On n'utilise pas les "[]" en java, dans la javadoc tu as deja tout pleins de containers, tels que les vectors, les list, etc.

Ensuite pour savoir si ce que tu as fait est bon, rien de mieux que de tester.
Enfin je ne comprends pas pourquoi tu te fais un algo de complexite 0(2n) alors que tu pourrais en faire un en complexite 0(n) ..

En gros pourquoi tu fais pas juste ca:
ArrayList<User> list = new ArrayList<User>(); 

for(int i=0;i<nbr;i++){ 
list.add(new User()); 

} 
3
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
9 janv. 2012 à 15:37
On n'utilise pas les [] en Java ? Ah bah ça pour une nouvelle c'est une nouvelle !!!
0
matthoffman Messages postés 405 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 22 janvier 2013 47
9 janv. 2012 à 15:41
J'ai dit "on ne peut pas utiliser les [] en java" ?
Non j'ai dit qu'il n'y avait aucune utilite a utiliser ca, quand toute une batterie de structure bien plus puissante est deja disponible.

Je t'en prie, cite moi un exemple ou les [] sont plus utiles qu'une liste, un vector, etc. ?
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 9/01/2012 à 16:03
Si si j'ai bien lu, tu as dit "n'utilise pas les [] en Java"

Exemple : la consommation en mémoire d'une liste de wrapper (Character, Integer...) est bien plus importante que la consommation en mémoire d'un tableau de types primitifs (char, int...)

Cas extrème : le byte taille 1 octet, donc un tableau de N bytes taille N+4 octets (4 c'est la taille de l'objet tableau), une List<Byte> va au minimum faire du 5N+4 octets (5 c'est les 4 octets de l'objet Byte, plus l'octet du byte primitif). Perte de mémoire : facteur 5 !!!
Et encore je ne parle pas des machines 64 bits, où chaque objet taille 8 octets...

Si tu ne les vois pas, les tableaux sont partout en Java. Exemple : un String en interne c'est un char[], c'est d'ailleurs pour ça qu'ils sont immuables, c'est parce que les tableaux le sont aussi...

Remarque au passage : Vector et ArrayList c'est la même chose à part que le premier utilise un mécanisme de sécurité multi-thread qui ne te servira à rien dans 99% des cas mais qui alourdira inutilement ton programme !

Ce n'est pas parce qu'on code en Java qu'il faut faire fi des optimisations, bien au contraire, quand tu vois les monstruosités que l'on peut obtenir avec trois fois rien !
0
matthoffman Messages postés 405 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 22 janvier 2013 47
Modifié par matthoffman le 9/01/2012 à 16:39
Mwahahahaha depuis quand on fait de l'embarque avec du langage aussi haut niveau que du java ??

Je m'attendais a cet argument, mais alors dans ce cas dis moi:
tu fais tout toi meme quand tu codes en java alors, et tu n'utilises rien de ce qui est fournit dans la javadoc? (ba oui tout ce qui est implantation de structure etc, tu n'utilises pas toutes les fonctionnalites des structures en general, sans compter les appels de fonctions, et declaration d'attributs et methodes qui coutent en espace memoire).
A partir du moment ou tu utilises du haut niveau, tu penses FORCEMENT pas optimise, alors ton discours est bien beau, mais n'est pas valable pour du java .... Desole
(Attention: Je n'ai pas dit qu'il fallait coder comme un porc pour autant hein !)

En ce qui concerne les utilisations Vector et List, non ce n'est pas la meme chose (mais la encore tu n'as pas comris que je parlais d'utilite)... Je vais pas lui dire d'utiliser un TreeMap alors qu'il n'a besoin que d'une liste ...

Enfin bref. Ne polluons pas son topic, il a eu sa reponse.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
9 janv. 2012 à 17:19
Depuis quand on fait de l'embarque avec du langage aussi haut niveau que du java ?
Regarde ton téléphone portable, ton GPS, etc... J2ME est partout !

Dire que les tableaux ne s'utilisent pas en Java est une aberration monstre !
Avant de faire des classes de haut niveau qui utilisent à fond l'orienté objet, il faut une base solide, et cela passe par des classes de plus bas niveau dont les opérations élémentaires sont optimisées !

Mais tu as raison sur un point cette discussion est totalement hors-sujet par rapport au topic.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
9 janv. 2012 à 15:44
Si tu fais comme ça, ta liste va contenir deux fois les éléments du tableau.
Une première fois car tu appelles ton constructeur avec Arrays.asList(user) en paramètre
Puis une deuxième fois avec la boucle for qui ajoute les éléments un à un.
0
jojo@1989 Messages postés 3 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 9 janvier 2012
9 janv. 2012 à 21:10
salut, oui je vois merci bcp
0
jojo@1989 Messages postés 3 Date d'inscription lundi 9 janvier 2012 Statut Membre Dernière intervention 9 janvier 2012
9 janv. 2012 à 21:07
Tout d'abord merci a vous tous pour le temps que vous m'avez accorder, et merci pour la solution c'est ce que je cherchais, (i'm happy)... c'est mon premier programme ou j'utilise les listes.
0