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

Langage Java Discussion :

[info]LinkedList vs Vector


Sujet :

Langage Java

  1. #1
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut [info]LinkedList vs Vector
    Bonjour à tous,

    Tout est dans le titre:
    Quelle est la différence entre une LinkedList et un Vector ?
    (sachant qu'un vector peut être aussi classé via Collection.sort() )

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1

  3. #3
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut
    java.util.LinkedList :
    Un java.util.LinkedList utilise une liste chainée pour ranger les données.
    Je ne comprend pas ce que cela signifie, d'où ma question suite à la lecture de la FAQ.
    Qu'est ce qu'une "liste chainée" ?

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Regis.C
    Je ne comprend pas ce que cela signifie, d'où ma question suite à la lecture de la FAQ.
    Il fallait le préciser... Beaucoups de question traite de sujet déjà traité dans la FAQ simplement parce qu'ils n'ont pas regardés avant de poster...
    Ceci pour expliquer que parfois je me contente d'un lien lorsque cela me semble être le cas
    Désolé...


    Donc :
    La description du dico : http://dico.developpez.com/html/1075-Langages-liste-chainee.php

    Une liste chainée est une liste d'élément qui pointe sur le premier élément. Ensuite chaque élément pointe sur l'élément suivant.
    Par exemple, en Java un élément de la liste pourrait être représenté par l'objet suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Element {
    	protected Object data;
    	protected Element next;
     
    	/* ... */
    }
    La liste chainée comporte une référence sur un Element (le premier sui sera ajouté), et pour chaque élément, le champ data contient les donnée ajouté à la liste, et le champ next contient la référence sur l'élément suivant (ou null si on est sur le dernier élément).

    On appelle ainsi "Liste Chainée" une classe (ou un ensemble de méthode pour les langages procéduriaux) permettant de gérer diverses opérations sur de tels structures (ajout, suppression, recherche, etc...)

    L'intérêt des listes chainées est de limiter les allocations mémoires puisque ne sont alloué qu'un Element par ajout...
    Toutefois, elles ne sont à utiliser que dans le cas d'un parcourt linéaire de la liste... En effet, les accès par indice sont coûteux en temps car il faut "parcourir" tous les éléments précédents contrairement à un tableau...


    Vector est basé sur un tableau standard qui est réalloué en cas de besoin. Ces réallocations peuvent être couteuse en temps si on ajoute beaucoups d'éléments (mais peuvent être éviter en spécifiant une taille minimum lors de la création) mais l'accès par indice est très rapide puisqu'on utilise un tableau...

    Comme tu as du le voir dans la FAQ, Vector est en fait une version synchronisé de ArrayList (c-a-d qu'elle gère les modifications depuis plusieurs thread en même temps). Il est donc préférable d'utiliser ArrayList à la place.

    De plus, pour avoir une List synchronisé, il vaut mieux utilisé la méthode statique Collections.synchronizedList(List)...

    J'espère avoir été clair...

    a++

  5. #5
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut
    Citation Envoyé par adiGuba
    De plus, pour avoir une List synchronisé, il vaut mieux utilisé la méthode statique Collections.synchronizedList(List)...

    J'espère avoir été clair...

    a++
    Oui tu l'as été et je te remercie pour ces éclaircissements.
    Il me reste une question malgré la lecture de la javadoc du lien que tu fournis. Quel est l'intéret d'une liste "synchonisée" ?

  6. #6
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    la synchronisation est utilisée pour les applications multithreadées, cela evite que des methodes soit appelées en meme temps ce qui peu generer des conflit.
    exemple : tu as une classe voiture qui possede une methode avancer() et une methode reculer() qui mettent a jours un attribut kilometrage ; il est evident qu'un thread ne doit pas appeler avancer() alors qu'un autre appele la methode reculer(). la synchronisation evite ce genre de conflit.
    si ton application n'utilise pas la classe en question dans un context multithreadé, prefere une classe non synchronisée car la synchronisation nuit aux performance.
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  7. #7
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut
    merci !

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

Discussions similaires

  1. Vector Vs ArrayList Vs LinkedList
    Par thierryler dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 29/04/2011, 10h40
  2. Des info sur Vector de la STL
    Par Colbix dans le forum SL & STL
    Réponses: 16
    Dernier message: 28/03/2007, 17h54
  3. Recuperation d'info d'un Vector
    Par Attila50 dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 14/02/2007, 14h08
  4. [Info][Vector] Doublons
    Par feed_our_vision dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 23/12/2004, 11h47
  5. [info]arrayList ou Vector
    Par schousso dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/05/2004, 15h47

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