Je ne pense pas que ArrayDeque
est meilleur que LinkedList
. Ils sont différents.
ArrayDeque
est plus rapide que LinkedList
en moyenne. Mais pour ajouter un élément, ArrayDeque
prend un temps constant amorti, et LinkedList
prend un temps constant.
Pour les applications sensibles au facteur temps qui exigent que toutes les opérations prennent un temps constant, il faut seulement LinkedList
doit être utilisé.
ArrayDeque
L'implémentation de l'UE utilise des tableaux et nécessite un redimensionnement. Occasionnellement, lorsque le tableau est plein et qu'il faut ajouter un élément, le redimensionnement prend un temps linéaire, ce qui entraîne l'utilisation de l'option add()
méthode qui prend un temps linéaire. Cela pourrait être un désastre si l'application est très sensible au temps.
Une explication plus détaillée de l'implémentation de ces deux structures de données par Java est disponible dans le document " Algorithmes, première partie "cours sur Coursera proposé par l'Université de Princeton, enseigné par Wayne et Sedgewick. Le cours est gratuit pour le public.
Les détails sont expliqués dans la vidéo "Redimensionnement des tableaux" dans la section "Piles et files d'attente" de la "Semaine 2".
5 votes
Regardez la réponse à cette question que j'ai posée il y a quelques jours : stackoverflow.com/questions/6129805/
1 votes
Dans le dossier, où vous avez installé votre jdk, il y a un fichier
src.zip
. Il s'agit d'une archive contenant le code source des classes java. Je recommande fortement d'étudier la structure et les internes de ces classes pour mieux comprendre le fonctionnement des classes java.0 votes
Encore un point. La taille par défaut de ArrayDeque est de 16. ArrayDeque double sa taille lorsqu'il est plein. Les éléments sont copiés dans le nouveau tableau après que la taille ait doublé. Il est préférable d'initialiser ArrayDeque avec une taille initiale.
0 votes
Un autre point qui mérite d'être mentionné est que sur LinkedList vous pouvez utiliser des index pour itérer à travers ses éléments alors que ArrayDeque ne supporte pas l'accès basé sur les index.