Remplir une liste par des objets

[Résolu/Fermé]
Signaler
Messages postés
3
Date d'inscription
lundi 9 janvier 2012
Statut
Membre
Dernière intervention
9 janvier 2012
-
Messages postés
3
Date d'inscription
lundi 9 janvier 2012
Statut
Membre
Dernière intervention
9 janvier 2012
-
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?

3 réponses

Messages postés
405
Date d'inscription
lundi 24 mars 2008
Statut
Membre
Dernière intervention
22 janvier 2013
45
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
16403
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
8 octobre 2021
2 893
On n'utilise pas les [] en Java ? Ah bah ça pour une nouvelle c'est une nouvelle !!!
Messages postés
405
Date d'inscription
lundi 24 mars 2008
Statut
Membre
Dernière intervention
22 janvier 2013
45
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. ?
Messages postés
16403
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
8 octobre 2021
2 893
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 !
Messages postés
405
Date d'inscription
lundi 24 mars 2008
Statut
Membre
Dernière intervention
22 janvier 2013
45
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.
Messages postés
16403
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
8 octobre 2021
2 893
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.
Messages postés
16403
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
8 octobre 2021
2 893
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.
Messages postés
3
Date d'inscription
lundi 9 janvier 2012
Statut
Membre
Dernière intervention
9 janvier 2012

salut, oui je vois merci bcp
Messages postés
3
Date d'inscription
lundi 9 janvier 2012
Statut
Membre
Dernière intervention
9 janvier 2012

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.