Différence entre ArrayList et LinkedList en Java

Auteur: Laura McKinney
Date De Création: 3 Avril 2021
Date De Mise À Jour: 15 Peut 2024
Anonim
Différence entre ArrayList et LinkedList en Java - La Technologie
Différence entre ArrayList et LinkedList en Java - La Technologie

Contenu


ArrayList et LinkedList sont les Collection classes, et les deux met en œuvre la liste interface. La classe ArrayList crée la liste qui est stockée en interne dans un dynamique tableau qui grossit ou diminue au fur et à mesure que les éléments en sont ajoutés ou supprimés. LinkedList crée également la liste qui est stockée en interne dans un Doublement Lié liste. Les deux classes sont utilisées pour stocker les éléments dans la liste, mais la différence majeure entre les classes ArrayList et LinkedList est que Liste des tableaux permet un accès aléatoire aux éléments de la liste car il fonctionne sur un basé sur un index Structure de données. D'autre part, le LinkedList n'autorise pas l'accès aléatoire car il n'a pas d'index pour accéder directement aux éléments, il doit parcourir la liste pour extraire ou accéder à un élément de la liste.


Laissez-nous discuter de quelques autres différences entre ArrayList et LinkedList à l'aide du tableau de comparaison présenté ci-dessous.

  1. Tableau de comparaison
  2. Définition
  3. Différences Clés
  4. Conclusion

Tableau de comparaison

Base de comparaisonListe des tableauxLinkedList
De base ArrayList permet un accès aléatoire aux éléments de la liste.LinkedList n'autorise pas l'accès aléatoire aux éléments de la liste.
Structure de donnéesLa structure interne utilisée pour stocker les éléments est le tableau dynamique.La structure interne utilisée pour stocker des éléments est une liste de liens doublement.
ÉtendArrayList étend la classe AbstarctList.LinkedList étend AbstractSequentialList.
Met en oeuvreAbstractList implémente l'interface List.LinkedList implémente List, Deque, Queue.
Accès L'accès aux éléments de la liste est plus rapide dans ArrayList.L'accès aux éléments de la liste est plus lent dans LinkedList.
ManipulationLa manipulation des éléments de la liste est plus lente dans ArrayList.La manipulation des éléments de la liste est plus rapide dans LinkedList.
ComportementArraylList se comporte comme une liste lorsqu'il implémente une liste.LinkedList se comporte comme une liste comme une file d’attente lorsqu’elle implémente à la fois List et Queue.


Définition de ArrayList

le AbstractList la classe est définie par le Cadre de collection. Il s'étend AbstarctList et met en œuvre liste interface. ArrayList utilise tableau dynamique c'est-à-dire le tableau de longueur variable en tant que structure de données interne pour stocker les éléments dans la liste. La nécessité de ArrayList se pose car le tableau en Java a une longueur fixe. Donc, il ne peut pas grossir ou diminuer de taille car les éléments sont ajoutés ou supprimés du tableau. Donc, vous devez connaître la taille du tableau requis à l'avance. Mais la liste de tableaux implémentée à l'aide de la classe ArrayList peut être agrandie et réduite en taille à mesure que les éléments sont ajoutés ou supprimés du tableau.

La liste de tableaux mise en œuvre à l'aide de ArrayList est accessible au hasard comme ArrayList fonctionne sur la base d'un index. Donc en connaissant index, vous pouvez accéder directement à l’élément de la liste. Il y a trois constructeurs de ArrayList:

ArrayList () ArrayList (Collection <? Étend E> c) ArrayList (int capacité)

le première constructeur implémente une liste de tableau vide. le seconde constructeur implémente une liste de tableaux initialisée en utilisant le Collection c éléments. le troisième constructeur implémente la liste de tableaux avec le capacité fourni dans l'argument. En travaillant avec ArrayList, vous aurez parfois besoin de convertir Collection Collection ArrayList en un tableau. Cela peut être fait en appelant toArray ().

Définition de LinkedList

Comme ArrayList, LinkedList est aussi un Collection utilisations de la classe liste doublement liée en tant que structure de données interne pour stocker les éléments dans la liste. La classe LinkedList s'étend AbstractSequentialList et met en œuvre le liste, Deque et Queue interfaces. La liste liée implémentée à l'aide de LinkedList ne peut pas être consultée de manière aléatoire. Si vous souhaitez récupérer un élément de la liste, vous devez itérer la liste afin de rechercher cet élément.

Il y a deux constructeurs dans la classe LinkedList.

LinkedList () LinkedList (Collection <? Extend E> c)

le première constructeur crée une liste liée vide. le seconde constructeur crée une liste chaînée, initialisée avec les éléments de Collection c.

Dans LinkedList, la manipulation de la liste est simple et rapide. En effet, si vous ajoutez ou supprimez un élément de la liste, il n'est pas nécessaire de déplacer les éléments comme dans ArrayList. Mais l'accès est plus lent car il n'a pas d'index pour accéder directement aux éléments.

  1. La liste implémentée par ArrayList est accessible de manière aléatoire car ArrayList adopte la structure de données basée sur l'index du tableau. D’autre part, la liste implémentée par LinkedList ne peut pas être consultée aléatoirement car pour récupérer ou accéder à un élément particulier de la liste, vous devez parcourir la liste.
  2. La structure de données interne utilisée par ArrayList pour stocker les éléments de la liste est une tableau dynamique qui peut augmenter ou diminuer à mesure que les éléments sont ajoutés ou supprimés de la liste. Cependant, la structure de données interne utilisée par LinkedList pour stocker les éléments dans la liste est liste doublement liée.
  3. Le ArrayList étend le AbstractList qui est aussi une classe Collection alors que la classe LinkedList s’étend AbstractSequentialList classe qui est à nouveau une classe Collection.
  4. Implémentations de la classe ArrayList liste interface alors que, la classe LinkedList implémente liste, Queue, et Deque interfaces.
  5. L'accès aux éléments de la liste implémentée à l'aide de ArrayList est plus rapide comme il a une structure de données basée sur un index. D'autre part, il n'y a pas de structure basée sur un index dans la liste implémentée par LinkledList. Par conséquent, un itérateur est appliqué sur la liste pour atteindre l'élément à accéder, ce qui permet d'accéder à Ralentissez dans LinkedList.
  6. Manipulation est une manipulation dans la liste mise en œuvre à l'aide de ArrayList car chaque fois qu'un élément est ajouté ou supprimé de la liste, les éléments de la liste sont décalés pour s'adapter à la modification. D'autre part, la manipulation est plus rapide dans la liste mise en œuvre par LinkedList, car elle n'exige pas de déplacement d'éléments dans la liste lors de l'ajout ou de la suppression des éléments de la liste.
  7. ArrayList agit comme un liste lorsqu’il implémente l’interface List alors que, la LinkedList agit comme liste et queue car il implémente List et Queue les deux.

Conclusion:

Lorsqu'il y a une addition ou une suppression fréquente des éléments de la liste, LinkedList doit être utilisé car il fonctionne mieux lors de la manipulation. Si une recherche fréquente est appliquée à la liste, le paramètre ArrayList constitue le meilleur choix, car il fonctionne mieux lors de l'accès aux éléments de la liste.