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.
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 |
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.
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.
Comment utiliser correctement LinkedList et ArrayList Classe ArrayList
Recommended Posts