[JAVA] Différence entre ArrayList et LinkedList

L'autre jour, on m'a demandé si je pouvais comprendre la différence entre ArrayList et LinkedList, et je ne pouvais pas répondre, donc je le posterai sous forme de mémorandum.

Qu'est-ce que ArrayList

ArrayList est une structure de liste qui utilise des tableaux en interne. La différence avec le tableau standard est que vous pouvez le redimensionner plus tard. De par sa nature, la lecture et l'écriture de valeurs par valeur d'index sont rapides, mais l'insertion / suppression d'éléments devient plus lente à mesure que la taille du tableau augmente et que la position d'opération approche du début.

·mérite Chaque élément a un numéro de séquence et est tous indexé en mémoire afin que vous puissiez accéder rapidement à un élément particulier.

·Démérite Lorsqu'un élément autre que la fin est ajouté ou soustrait, un processus de réarrangement est effectué pour déplacer vers le haut ou vers le bas le numéro de séquence de tous les éléments suivants. Par conséquent, tous les éléments de la ArrayList continuent à être soigneusement organisés avec tous les numéros de séquence de 0 au nombre total d'éléments moins 1, mais le traitement prend du temps. Je vais. Et le nombre de processus augmente proportionnellement au nombre d'éléments.

Méthode Aperçu
add([int index,] E e) Insérer l'élément e à l'index de position spécifié (insérer à la fin sans index omis)
clear() Supprimer tous les éléments de la liste
contains(Object e) Déterminez si la liste contient l'élément o
get(int index) be
indexOf(Object e) Obtenir la première valeur d'index où l'élément o apparaît
isEmpty() Déterminez si la liste est vide
remove(int index|Object o) Supprimer l'élément spécifié
set(int index, E e) Définir la taille de l'index de l'élément int()
int size() Obtenez le nombre d'éléments dans la liste

Qu'est-ce que la liste liée?

LinkedList représente une liste de liens qui référence des éléments avec des liens bidirectionnels. En raison de sa nature, l'insertion / la suppression d'éléments est plus rapide que ArrayList car elle ne nécessite qu'une reconnexion. D'autre part, il a la propriété qu'il n'est pas bon pour l'accès aléatoire par valeur d'index. Pour cette raison, LinkedList sera utilisé dans les situations où il y a de nombreuses opérations d'insertion / suppression, et ArrayList sera utilisé dans d'autres cas. Les méthodes qui peuvent être utilisées dans la classe LinkedList sont les mêmes que ArrayList, veuillez donc vous y référer également. Voici un exemple de définition d'éléments dans LinkedList et de lecture de leur contenu dans l'ordre.

·mérite Lors de l'ajout ou de la soustraction d'éléments, la réécriture des informations de lien est la fin, elle est donc plus rapide que ArrayList car le traitement de déplacement n'est pas effectué.

·Démérite Puisque chaque élément ne contient pas de numéro de séquence, il est nécessaire de compter la séquence un par un depuis le début ou la fin lors de la récupération d'un élément spécifique, donc par rapport à ArrayList, qui contient un numéro de séquence à l'avance. , Cela prendra beaucoup de temps.

Conclusion

ArrayList est utilisé lorsqu'un accès aléatoire est requis pour les éléments et qu'il n'y a pas beaucoup besoin d'opérations d'insertion / suppression pour les éléments du tableau. LinkedList est utilisé lorsque l'ajout / la suppression de processus autres que le dernier élément est fréquemment requis et l'accès à un élément spécifique n'est pas requis.

référence

Comment utiliser correctement LinkedList et ArrayList Classe ArrayList

Recommended Posts

Différence entre ArrayList et LinkedList
Différence entre List et ArrayList
LinkedList et ArrayList
[Java] Différence entre array et ArrayList
Différence entre EMPTY_ELEMENTDATA et DEFAULTCAPACITY_EMPTY_ELEMENTDATA dans ArrayList
Différence entre vh et%
Différence entre i ++ et ++ i
[Java] Différence entre == et égal
Différence entre CUI et GUI
Différence entre les variables et les variables d'instance
Différence entre mockito-core et mockito-all
Différence entre l'installation de bundle et de bundle
Différence entre render et redirect_to
Différence entre .bashrc et .bash_profile
Différence entre StringBuilder et StringBuffer
Différence entre render et redirect_to
[Ruby] Différence entre obtenir et publier
Différence entre la méthode d'instance et la méthode de classe
Différence entre l'opérateur == et la méthode égale
[Java] Différence entre Hashmap et HashTable
[Terminal] Différence entre irb et pry
JavaServlet: différence entre executeQuery et executeUpdate
[Ruby] Différence entre is_a? Et instance_of?
Différence entre l'opérateur == et la méthode eqals
Différence approximative entre RSpec et minitest
[Rails] Différence entre find et find_by
Différence entre la variable d'instance et la variable de classe
[JAVA] Différence entre abstrait et interface
Différence entre Thymeleaf @RestController et @Controller
Différence entre Stream map et flatMap
Différence entre le type primitif et le type de référence
Différence entre string.getByte () et Hex.decodeHex (string.toCharaArray ())
[Java] Différence entre fermable et fermable automatiquement
[Java] Différence entre StringBuffer et StringBuilder
[Java] Différence entre longueur, longueur () et taille ()
[rails] Différence entre redirect_to et render
[Android] Différence entre finish () et return;
Remarque: Différence entre Ruby "p" et "met"
Différence entre final et immuable en Java
[Remarque] Différence entre l'installation et la mise à jour du bundle
Différence entre pop () et peek () dans la pile
[Pour les débutants] Différence entre Java et Kotlin
Différence entre isEmpty et isBlank de StringUtils
Différence entre getText () et getAttribute () de Selenium
À propos de la différence entre irb et pry
Différence entre "|| =" et "instance_variable_defined?" Dans Ruby memo
[Ruby] Différence entre print, put et p
[Java] Différence entre la plage Intstream et la plageClosed
Différence entre int et Integer en Java
[Rails] Différence entre redirect_to et render [Débutant]
[Java] Comprendre la différence entre List et Set
[Rails / Active Record] À propos de la différence entre créer et créer!
[Java] Différence entre fermable et fermable automatiquement
== et égal
Comprenez la différence entre les classes abstraites et les interfaces!