Maison >Java >javaDidacticiel >Détails graphiques comparant ArrayList et LinkedList en Java

Détails graphiques comparant ArrayList et LinkedList en Java

Y2J
Y2Joriginal
2017-05-03 14:47:031739parcourir

Cet article compare principalement ArrayList et LinkedList en Java à travers des exemples. Les amis dans le besoin peuvent s'y référer

ArrayList et LinkedList sont deux méthodes d'implémentation courantes de l'interface Collection, et elles utilisent différentes stratégies de stockage pour s'adapter aux besoins des différentes situations.

Méthode d'implémentation

ArrayList utilise en interne des collections pour stocker des données

La seule chose qui doit être notée est celui de la logique de traitement pour la capacité dépassant le seuil. La capacité par défaut du tableau est de 10 et la capacité maximale est Integer.Max_Value. Si la capacité maximale est dépassée, une exception de dépassement de mémoire sera levée

Le mécanisme d'expansion est illustré ci-dessous

La capacité étendue est 1,5 fois la capacité d'origine

La mise en œuvre de LinkedList

Utilise en interne la classe interne de nœud de liste doublement chaînée pour stocker les données. En raison de l'utilisation d'une liste doublement chaînée, LinkedList peut également être utilisée comme pile et file d'attente, mais l'efficacité est relativement faible. implémentation d'ArrayDeqeue.

Comparaison des performances

En termes d'efficacité d'insertion de queue, il n'y a pas beaucoup de différence entre les deux, mais LinkedList doit maintenir une relation de liste doublement chaînée, toute l'efficacité du stockage sera légèrement inférieure à celle d'ArrayList

Le temps d'ArrayList est principalement consacré à l'expansion de la capacité et à la migration des données si nous initialisons la capacité en même temps. , ça devrait être OK Il y a place à l'amélioration. Comparons-le à nouveau. Il y a une marge d'amélioration terrifiante de 50 %

L'avantage de Linked est l'efficacité de l'insertion de la tête. . Il vous suffit de modifier l'élément head. Les pointeurs peuvent le faire, mais le tableau doit toujours déplacer les données suivantes, et l'efficacité est bien inférieure à LinkedList

Pour get. et les opérations d'ensemble, la recherche binaire est effectuée dans la liste chaînée. Les tableaux peuvent accéder directement aux éléments via des indices, donc l'efficacité est supérieure à LinkedList

Sur la base de ce qui précède. Par comparaison, nous pouvons essentiellement déterminer que si est simplement stocké. Dans le cas d'une simple itération de données, nous utilisons généralement des collections pour être plus efficaces

Si des modifications fréquentes des éléments sont impliquées, LinkedList.

doit être utilisé

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!

Déclaration:
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