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() )
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() )
Salut,
FAQ : Quelles différences entre ArrayList, LinkedList et Vector ? !!!!
Je ne comprend pas ce que cela signifie, d'où ma question suite à la lecture de la FAQ.java.util.LinkedList :
Un java.util.LinkedList utilise une liste chainée pour ranger les données.
Qu'est ce qu'une "liste chainée" ?
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...Envoyé par Regis.C
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 :
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).
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; /* ... */ }
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++
Oui tu l'as été et je te remercie pour ces éclaircissements.Envoyé par adiGuba
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" ?
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
merci !
![]()
Partager