IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

ArrayList or manuel array ?


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Par défaut ArrayList or manuel array ?
    salut tout le monde.
    Je voudrais savoir si il est plus efficace (entendre rapide/performant) d'utiliser un ArrayList ou de recoder soi-même toute la gestion d'un tableau d'objet, sachant que je n'y compte stocker qu'une sorte d'objet (que j'ai crée préalablement).

    En clair, cékoikèmieux ?
    1) ArrayList (Objet)
    2) Objet[]

    PS: j'ai déjà regardé plein de doc mais j'ai pas trouvé la question qui saura me décider véritablement.

    Merci

  2. #2
    Membre chevronné Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Par défaut
    ArrayList sans aucune hésitation, et pour de nombreux avantages. Le plus évident est que la taille de l'ArrayList n'est pas fixe et qu'on peut rajouter des Objets sans avoir à s'en préocuper au contraire de [] ou tu devras crée un nouveau tableau et recopier l'ancien à l'intérieur puis ton nouvel élément.

  3. #3
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    En plus, si tu utilises java 1.5, avec les generics, ca vas te faciliter la vie, plus de transtypage manuel

  4. #4
    dclink
    Invité(e)
    Par défaut
    Citation Envoyé par wichtounet
    En plus, si tu utilises java 1.5, avec les generics, ca vas te faciliter la vie, plus de transtypage manuel
    +1 De plus si les performances te tiennent tant que ça si tu connais d avance le nbre d éléments tu peux initialiser ton ArrayList de cette manière...

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Par défaut
    ok merci beaucoup messieurs !

  6. #6
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Salut,

    Si c'est là, c'est pas pour rien. On évite de réinventer la roue et on utilise les API du JDK, ce sont vos amis

    Bon courage !

    Ah oui petite remarque : Si c'est un nombre fixe d'objets qui ne change pas, c'est un tableau qu'il faut utiliser, un ArrayList sinon ^^.

    mavina

  7. #7
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Par défaut
    ceci dit, utiliser une arrayList maison, qui ne contient que un type d'objet permet d'eviter un cast en sortie, et permet donc de gagner un peu de prefs face a l'arrayList normale. M'enfin bon, faut vraiment avoir besoins du moindre % de CPU (ce qui est rare)

  8. #8
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par lunatix
    ceci dit, utiliser une arrayList maison, qui ne contient que un type d'objet permet d'eviter un cast en sortie, et permet donc de gagner un peu de prefs face a l'arrayList normale. M'enfin bon, faut vraiment avoir besoins du moindre % de CPU (ce qui est rare)
    Un cast? Pas avec les generics...
    Tu veux dire que l'utilisation des generics provoque un "cast automatique" qui est coûteux?

  9. #9
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par ®om
    Un cast? Pas avec les generics...
    Tu veux dire que l'utilisation des generics provoque un "cast automatique" qui est coûteux?
    Tous les transtypages que l'on devait faire avant sont maintenant fait par la JVM, donc ca implique un cout, mais il n'est pas énorme.

  10. #10
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Par défaut
    Citation Envoyé par wichtounet
    donc ca implique un cout, mais il n'est pas énorme.
    exactement. si vraiment on a besoins des meilleurs perfs possibles, il faut faire une ArrayList maison et typée (les generics ne sont la que pour le dev, ensuite, ils disparaissent a la compilation) pour l'objet que l'on utlise. Mais franchment, ce genre de besoins est hyper rare.

  11. #11
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Par défaut
    Finalement je me suis décidé, je suis pas autant en galère de CPU que ça donc j'ai choisi une ArrayList. Maintenant j'ai encore une question de ce genre inutile mais que je me pose quand même. Pour parcourir ma liste, vaut-il mieux utiliser un simple "int i" ou alors sortir l'artillerie lourde avec un "Iterator" ? (curiosité quand tu nous tient ...)
    Merci !

  12. #12
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Si les accés sont aléatoire les deux sont équivalents; en revanche dans une boucle du type:
    l'iterator est mieux.

  13. #13
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    HIstoire de faciliter dans ce cas là tu as directement la boucle foreach avac java 1.5:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ArrayList<String> l = new ArrayList<String>();
    ...
    ...
    ...
    for(String s : l ) {
       doSomething(s);
    }

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 85
    Par défaut Astuce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pour parcourir ma liste, vaut-il mieux utiliser un simple "int i" ou alors sortir l'artillerie lourde avec un "Iterator" ?
    Vue que tu as l'air de vouloir être super précis question optimisation, tu
    peux même être encore plus efficace en bouclant avec un int à l'envers
    histoire de le tester uniquement avec 0 ;-)
    Cela si ton code te le permet biensure...

    for(int i = list.size() - 1; i >= 0; i--)
    {
    ...
    }

    a+
    Xavier

  15. #15
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Par défaut
    pour le choix de l'ArrayList : bon choix.franchement, les cas ou tu dois passer par une arraylist maison doivent pas courir les rues.

    le mieux c'est l'iterator, car il te protege de certains problemes (par exemple si tu enleves des choses de ta liste pendant le parcour et t'envoie une exception claire si ta liste est modifiée par un autre thread.)

  16. #16
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Par défaut
    D'accord !!!
    Merci pour toutes ces précisions !!!

  17. #17
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    N'oublie pas le bouton present en bas de page.


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    Personne ne parle de la sonde alternative, le tableau "manuel". Je voulais juste dire que si jamais tu connais le nombre d'éléments que tu veux stocker et que si celui-ci ne change pas, alors il n'y a pas de raison de preferer une ArrayList.....


    EDIT : c'était après le "bon courage", j'avais zappé.... Ca me paraissait bizare que personne ne l'ait mentionné....

  19. #19
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Citation Envoyé par mavina
    Ah oui petite remarque : Si c'est un nombre fixe d'objets qui ne change pas, c'est un tableau qu'il faut utiliser, un ArrayList sinon ^^.
    Si si on en a parlé ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Array d' Arraylist
    Par petibras dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 26/03/2010, 18h19
  2. Convertir un ArrayList vers Array
    Par Soulama dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 24/06/2009, 15h36
  3. Array,ArrayList ou linked list
    Par taha1 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 24/06/2009, 11h20
  4. Différence entre array arraylist ?
    Par sauceaupistou dans le forum Framework .NET
    Réponses: 7
    Dernier message: 28/03/2008, 22h01
  5. Réponses: 4
    Dernier message: 20/05/2007, 18h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo