Différence entre la liste de groupes et la liste chaînée Différence entre

Anonim

Comment les données sont-elles stockées?

La liste des tableaux et la liste des liens sont des termes courants en ce qui concerne le stockage et la récupération des données. Bien qu'il y ait beaucoup de périphériques de stockage, en fin de compte, ils dépendent du mécanisme de stockage. Ces deux mécanismes de stockage placent vos données dans les périphériques de stockage et les récupèrent en cas de besoin. Jetons un coup d'oeil à la façon dont ils stockent des données dans leur mémoire. La liste Array utilise un stockage séquentiel et les données sont stockées les unes après les autres. C'est peut-être une forme de stockage plus simple - cela évite la confusion. Oui, nous pouvons récupérer l'élément ou les données suivants à partir de l'emplacement de mémoire suivant de la liste de tableaux; cependant, il est stocké à l'aide de pointeurs dans la liste Linked. Ici, nous avons besoin de deux emplacements de mémoire pour le stockage - un pour les données, l'autre pour le pointeur. Un pointeur adresse l'emplacement de mémoire des données suivantes. Nous pouvons facilement comprendre que la liste liée ne stocke jamais les données de manière séquentielle; il utilise plutôt un mécanisme de stockage aléatoire. Les pointeurs sont les éléments clés pour localiser les emplacements de données dans la mémoire.

Dynamic Array et Linked List

Nous avons déjà discuté de la manière dont les deux mécanismes de stockage mettent des données et nous pouvons donner un terme 'dynamic array' au schéma de stockage interne de la liste Array. Il ne fait que mettre les données les unes après les autres - d'où le nom - alors que la liste Linked utilise une liste interne à l'aide de pointeurs pour suivre l'élément suivant. Par conséquent, il utilise une liste liée interne, comme une liste simple ou doublement liée pour nous montrer les données suivantes.

Utilisation de la mémoire

Comme la liste des tableaux ne contient que les données réelles, nous n'avons besoin d'espace que pour les données que nous stockons. Inversement, dans la liste Linked, nous utilisons également des pointeurs. Par conséquent, deux emplacements de mémoire sont requis et nous pouvons dire que la liste liée consomme plus de mémoire que la liste Array. Un aspect avantageux de la liste Linked est qu'il ne nécessite jamais d'emplacements mémoire continus pour stocker nos données, contrairement à la liste Array. Les pointeurs sont capables de maintenir la position de l'emplacement de données suivant, et nous pouvons même utiliser des emplacements mémoire plus petits qui ne sont pas continus. Quand il s'agit de l'utilisation de la mémoire, les pointeurs jouent le rôle principal dans la liste Linked, tout comme leur efficacité.

Taille de la liste initiale et de la liste chaînée

Avec la liste Array, même une liste vide nécessite une taille de 10, mais avec une liste Linked, nous n'avons pas besoin d'un espace aussi important. Nous pouvons créer une liste Linked vide avec une taille de 0. Plus tard, nous pouvons augmenter la taille au besoin.

Data Retrieval

La récupération de données est plus simple dans la liste Array car elle stocke séquentiellement. Tout ce qu'il fait est d'identifier le premier emplacement de données; à partir de là, l'emplacement suivant est accédé séquentiellement pour récupérer le reste.Il calcule comme la première position de données + 'n', où 'n' est l'ordre des données dans la liste Array. La liste Linked fait référence au pointeur initial pour trouver le premier emplacement de données, et à partir de là, il renvoie le pointeur associé à chaque donnée pour trouver l'emplacement de données suivant. Le processus de récupération dépend principalement des pointeurs ici, et ils nous montrent effectivement l'emplacement des données suivant.

Fin des données

La liste Array utilise une valeur nulle pour marquer la fin des données, alors que la liste Linked utilise un pointeur nul à cette fin. Dès que le système reconnaît des données nulles, la liste Array arrête la récupération de données suivante. De la même manière, le pointeur null empêche le système de passer à la récupération de données suivante.

Reverse Traversal

La liste Linked permet de parcourir en sens inverse avec l'aide de descendingiterator (). Cependant, nous n'avons pas une telle fonction dans une liste de tableaux - la traversée inverse devient un problème ici.

Syntaxe

Examinons la syntaxe Java des deux mécanismes de stockage.

Création de la liste de tableaux:

Liste arraylistsample = new ArrayList ();

Ajout d'objets à la liste de tableaux:

Arraylistsample. ajouter ("nom1");

Arraylistsample. ajouter ("nom2");

Voici à quoi ressemblera la liste Array résultante: [nom1, nom2].

Création de liste liée:

Liste linkedlistsample = new linkedList ();

Ajout d'objets à la liste chaînée:

Échantillon lié. ajouter ("nom3");

Exemple de liste de liens ajouter ("nom4");

Voici à quoi ressemblera la liste liée résultante - [nom3, nom4].

Quel est le meilleur pour l'opération Get ou Search?

La liste Array prend O (1) pour exécuter n'importe quelle recherche de données, tandis que la liste Linked prend u (n) pour la recherche de données n th . Par conséquent, une liste Array utilise toujours une heure constante pour toute recherche de données, mais dans la liste Linked, le temps pris dépend de la position des données. Par conséquent, les listes Array sont toujours un meilleur choix pour les opérations Get ou Search.

Quel est le meilleur pour l'opération d'REPLACEion ou d'addition?

La liste des tableaux et la liste chaînée prennent toutes deux la valeur O (1) pour l'ajout de données. Mais si le tableau est plein, la liste de tableaux prend beaucoup de temps pour le redimensionner et copier les éléments dans le nouveau. Dans ce cas, la liste Linked est le meilleur choix.

Quel est le meilleur pour l'opération de suppression?

L'opération de suppression prend presque le même laps de temps dans la liste Array et dans la liste Linked. Dans la liste Array, cette opération supprime les données, puis déplace la position des données pour former le tableau le plus récent. Il prend l'heure O (n). Dans la liste Linked, cette opération traverse les données particulières et modifie les positions des pointeurs pour former la liste la plus récente. L'heure de la traversée et de la suppression est ici aussi O (n).

Quel est le plus rapide?

Nous savons qu'une liste Array utilise un tableau interne pour stocker les données réelles. Par conséquent, si des données sont supprimées, toutes les données à venir nécessitent un décalage de mémoire.Évidemment, cela nécessite beaucoup de temps et ralentit les choses. Un tel décalage de mémoire n'est pas requis dans la liste Linked, car tout ce qu'il fait est de changer l'emplacement du pointeur. Par conséquent, une liste liée est plus rapide qu'une liste de groupe dans n'importe quel type de stockage de données. Cependant, cela dépend uniquement du type d'opération, i. e. pour l'opération Get ou Search, la liste Linked prend beaucoup plus de temps qu'une liste Array. Quand on regarde la performance globale, on peut dire que la liste Linked est plus rapide.

Quand utiliser une liste de tableaux et une liste chaînée?

Une liste de tableaux est la mieux adaptée pour les besoins de données plus petits où la mémoire continue est disponible. Mais lorsque nous traitons d'énormes quantités de données, la disponibilité de la mémoire continue met en œuvre les mécanismes de stockage de données, qu'ils soient petits ou énormes. Ensuite, décidez lequel choisir - la liste Array ou la liste Linked. Vous pouvez aller de l'avant avec une liste de tableaux quand vous avez juste besoin de stockage et de récupération de données. Mais une liste peut vous aider au-delà en manipulant les données. Une fois que vous décidez à quelle fréquence la manipulation des données est requise, il est important de vérifier quel type de récupération de données vous effectuez habituellement. Quand c'est juste Get ou Search, alors la liste de tableau est le meilleur choix; pour d'autres opérations telles que REPLACEion ou Suppression, allez de l'avant avec la liste Linked.

Regardons les différences sous forme tabulaire.

S. Non Concepts Différences
Liste des groupes Liste liée
1 Stockage des données Mode Utilise le stockage séquentiel des données Utilise le stockage des données non séquentiel
2 < Schéma de stockage interne Maintient un tableau dynamique interne Maintient une liste liée 3
Utilisation de la mémoire Requiert un espace mémoire juste pour les données Requiert un espace mémoire pour les données pointeurs 4
Taille de la liste initiale Besoin d'espace pour au moins 10 éléments Pas besoin d'espace et nous pouvons même créer une liste chaînée vide de taille 0. 5
Data Retrieval Calcule comme la première position de données + 'n', où 'n' est l'ordre des données dans la liste Array Traversée du premier ou du dernier jusqu'à ce que les données requises soient requises 6 < Fin des données
Les valeurs nulles marquent la fin Le pointeur nul marque la fin 7 Inverser la traversée
Ne l'autorise pas Autorise la descendingiterator ( 8 Syntaxe de création de liste
Liste arraylistsample = new Array Liste (); Liste linkedlistsample = new linkedList (); 9

Ajout d'objets

Arraylistsample. ajouter ("nom1"); Exemple de liste de liens ajouter ("nom3"); 10

Obtenir ou Rechercher

Prend O (1) fois et est meilleur en performance Prend O (n) le temps et les performances dépendent de la position des données 11 Insérer ou ajouter
Consomme O (1) temps sauf lorsque le tableau est plein Consomme O (1) en toutes circonstances 12 Suppression ou suppression
Prend le temps O (n) < Prend le temps O (n) 13 Quand l'utiliser? Quand il y a beaucoup d'opérations Get ou Search impliquées; la disponibilité de la mémoire devrait être plus élevée même au début
Lorsqu'il y a beaucoup d'opérations d'REPLACEion ou de suppression, et que la disponibilité de la mémoire n'a pas besoin d'être continue