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 :

Vector Vs ArrayList Vs LinkedList


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut Vector Vs ArrayList Vs LinkedList
    Bonjour,

    On parle souvent de ces trois listes en Java.

    La différence qui me semble importante entre Vector et ArrayList est la synchro.

    On dit souvent (on me dit) que LinkedList est plus performant que ArrayList, mais pourquoi ? Je suppose qu'il y a des cas d'utilisation bien précis pour l'un ou l'autre.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  2. #2
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472

  3. #3
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    merci au niveau de l'algo c'est clair maintenant.

    Donc si je reprend

    L'API propose deux implémentations concrètes pour les listes (java.util.List). Une liste est une suite ordonnée d'éléments (les éléments peuvent être ajoutés à plusieurs endroits de la liste).

    java.util.ArrayList :
    Un java.util.ArrayList utilise un tableau en interne pour ranger les données. Un ArrayList fournit un accès aux éléments par leur indice très performant et est optimisé pour des opérations d'ajout/suppression d'éléments en fin de liste.
    Complexité : Les opérations size, isEmpty, get, set, iterator sont exécutées en temps constant.
    Les opérations d'ajout/suppression sont exécutées en temps constant amorti (les ajouts/suppressions en fin de liste sont plus rapides).

    java.util.LinkedList :
    Un java.util.LinkedList utilise une liste chainée pour ranger les données. L'ajout et la suppression d'éléments est aussi rapide quelle que soit la position, mais l'accès aux valeurs par leur indice est très lente.
    Complexité : Les opérations size, isEmpty, add, remove, set, get sont exécutées en temps constant. Toutes les méthodes qui font référence à un indice sont exécutées en temps O(n).

    java.util.Vector :
    La classe java.util.Vector est une classe héritée de Java 1. Elle n'est conservée dans l'API actuelle que pour des raisons de compatiblité ascendante et elle ne devrait pas être utilisée dans les nouveaux programmes. Dans tous les cas, il est préférable d'utiliser un ArrayList.
    Note : Cette classe est "thread-safe", c'est-à-dire que plusieurs processus peuvent l'utiliser en même temps sans risque.
    Complexité : idem que pour ArrayList, plus le temps de synchronisation des méthodes.
    Quand est ce que j'utilise un ArrayList à la place d'un LinkedList ?
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    en général:

    petite liste (<10 éléments) j'utilise systématiquement une arrayList. Pareil si je sais que je devrais parcourir la liste via son index ou si je crée la liste à partir d'une tableau et que je ne la modifie plus après coup.

    Si, au contraire, je sais que je parcourerais la liste uniquement avec un Iterator (pas de get(X) ) et que j'aurais beaucoup d'opérations d'ajout / suppression à faire, la linkelist est préférable.

    A noter qu'à taille donnée, une linkedlist prend plus de place en mémoire qu'un arrayList car la linkedList a besoin d'un instance de "Noeud" par élément.

Discussions similaires

  1. classe vector et arrayList implemente une nterface
    Par boobaie dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 24/03/2013, 18h31
  2. Différence entre Vector et ArrayList
    Par menzlitsh dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 29/03/2009, 14h32
  3. Vector ou arrayList?
    Par donnadieujulien dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 20/07/2008, 19h37
  4. Vector ou ArrayList dans un ActionForm ?
    Par TSalm dans le forum Struts 1
    Réponses: 5
    Dernier message: 03/04/2007, 13h41
  5. [Vector et ArrayList] Transformer Enumeration en Object[]
    Par nebule dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 25/09/2006, 16h27

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