Maison > Java > Javacommencer > Quelles sont les différences entre ArrayList, LinkedList et Vector ?

Quelles sont les différences entre ArrayList, LinkedList et Vector ?

王林
Libérer: 2020-08-06 16:01:03
avant
4842 Les gens l'ont consulté

Quelles sont les différences entre ArrayList, LinkedList et Vector ?

1. Analyse à partir de la structure des données de stockage

(tutoriel recommandé : tutoriel d'introduction Java)

ArrayList : Array

Vector : Array

LinkedList : Liste doublement chaînée

Array : Il peut être recherché rapidement en fonction de l'indice, donc dans la plupart des cas, la requête est rapide.

Cependant, si vous souhaitez effectuer des opérations d'ajout et de suppression, vous devrez déplacer tous les éléments derrière l'élément modifié, de sorte que la surcharge des ajouts et des suppressions est relativement importante, et l'efficacité d'exécution de l'ajout et les opérations de suppression du tableau sont faibles. ArrayList et Vector, qui utilisent des tableaux comme structures de stockage de données, ont également ces caractéristiques. La vitesse de requête est rapide (peut être récupérée directement en fonction de l'indice, ce qui est plus rapide que la recherche itérative), et l'ajout et la suppression sont lents.

Liste chaînée : il est pratique d'ajouter et de supprimer des éléments. Pour ajouter ou supprimer un élément, il vous suffit de gérer les références entre les nœuds. Tout comme les personnes se tenant la main d'affilée, si vous souhaitez ajouter ou supprimer quelqu'un, il vous suffit de changer les deux personnes à proximité pour qu'elles se tiennent la main avec une autre personne, et cela n'aura aucun effet sur les personnes qui se tiennent déjà la main. Les ressources et le temps consommés par la substitution sont les mêmes quel que soit l'endroit.

Mais il n'est pas pratique de rechercher. Il doit être comparé un par un, et il ne peut pas être recherché directement en fonction de l'indice. LinkedList, qui est stockée dans une structure de liste chaînée, présente également ces caractéristiques. Elle est facile à ajouter et à supprimer, mais lente à interroger (en référence à une requête aléatoire et non à une requête séquentielle).

2. Analyse du point de vue de l'héritage

Quelles sont les différences entre ArrayList, LinkedList et Vector ?

Ils implémentent tous l'interface List, ce qui signifie qu'ils implémentent tous get(int location ), remove(int location) et d'autres "fonctions pour obtenir et supprimer des nœuds en fonction des valeurs d'index".

(Tutoriel vidéo recommandé : Tutoriel vidéo Java )

Il est facile d'obtenir la valeur de la structure du tableau en fonction de l'indice et de l'implémentation de la LinkedList bidirectionnelle list est également relativement simple, en comptant la valeur de l'index. Pour implémenter, la recherche commence à partir de la moitié de la longueur de la liste chaînée. Si l'indice est plus grand, la recherche commencera à partir de la tête de la liste. commencera la recherche à partir de la fin de la liste.

3. Analyse du point de vue de la sécurité de la concurrence

Vecteur : sécurité des threads

ArrayList : sécurité des non-threads

LinkedList : Sécurité sans thread

4. Analyse de la croissance des données

Vecteur : Par défaut, la croissance est doublée par la longueur d'origine du tableau. En parlant de défaut, cela signifie qu'il peut définir la taille d'initialisation indépendamment.

ArrayList : agrandit automatiquement de 50 % le tableau d'origine.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal