Java LinkedList
Une liste chaînée est une structure de données de base courante. Il s'agit d'une liste linéaire, mais elle ne stocke pas les données dans un ordre linéaire ; à la place, chaque nœud stocke l'adresse du nœud suivant.
Les listes chaînées peuvent être divisées en listes simplement chaînées et en listes doublement chaînées.
Une liste simplement chaînée contient deux valeurs : la valeur du nœud actuel et un lien pointant vers le nœud suivant.

Une liste doublement chaînée possède trois valeurs entières : la valeur, un lien vers le nœud précédent et un lien vers le nœud suivant.

Java LinkedList est similaire à ArrayList et est un conteneur de données couramment utilisé.
Comparé à ArrayList, LinkedList est plus efficace pour les opérations d'ajout et de suppression, mais moins efficace pour les opérations de recherche et de modification.
Utilisez ArrayList dans les cas suivants :
- Accéder fréquemment à un élément particulier de la liste.
- Avoir uniquement besoin d'ajouter et de supprimer des éléments à la fin de la liste.
Utilisez LinkedList dans les cas suivants :
- Vous devez accéder à certains éléments de la liste par itération de boucle.
- Besoin d'ajouter et de supprimer fréquemment des éléments à des positions telles que le début, le milieu et la fin de la liste.
LinkedList hérite de la classe AbstractSequentialList.
LinkedList implémente l'interface Queue et peut être utilisée comme une file d'attente.
LinkedList implémente l'interface List et peut effectuer des opérations liées aux listes.
LinkedList implémente l'interface Deque et peut être utilisée comme une file d'attente.
LinkedList implémente l'interface Cloneable et peut être clonée.
LinkedList implémente l'interface java.io.Serializable, qui prend en charge la sérialisation et permet la transmission par sérialisation.

La classe LinkedList se trouve dans le package java.util. Vous devez l'importer avant utilisation. La syntaxe est la suivante :
// 引入 LinkedList 类 import java.util.LinkedList; LinkedList<E> list = new LinkedList<E>(); // 普通创建方法 或者 LinkedList<E> list = new LinkedList(Collection<? extends E> c); // 使用集合创建链表
Créez un exemple simple de liste chaînée :
Exemple
import java.util.LinkedList;
public class ExampleTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Example");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites);
}
}
La sortie de l'exemple ci-dessus est :
[Google, Example, Taobao, Weibo]
Dans la plupart des cas, utiliser ArrayList pour accéder à des éléments aléatoires dans une liste est plus efficace, mais dans les cas suivants LinkedList fournit des méthodes plus efficaces.
Ajouter des éléments au début de la liste :
Exemple
import java.util.LinkedList;
public class ExampleTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Example");
sites.add("Taobao");
// Utilisez addFirst() pour ajouter des éléments en tête
sites.addFirst("Wiki");
System.out.println(sites);
}
}
La sortie de l'exemple ci-dessus est :
[Wiki, Google, Example, Taobao]
Ajouter des éléments à la fin de la liste :
Exemple
import java.util.LinkedList;
public class ExampleTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Example");
sites.add("Taobao");
// Utilisez addLast() pour ajouter des éléments en queue
sites.addLast("Wiki");
System.out.println(sites);
}
}
La sortie de l'exemple ci-dessus est :
[Google, Example, Taobao, Wiki]
Supprimer des éléments au début de la liste :
Exemple
import java.util.LinkedList;
public class ExampleTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Example");
sites.add("Taobao");
sites.add("Weibo");
// Utilisez removeFirst() pour supprimer l'élément de tête
sites.removeFirst();
System.out.println(sites);
}
}
La sortie de l'exemple ci-dessus est :
[Example, Taobao, Weibo]
Supprimer des éléments à la fin de la liste :
Exemple
import java.util.LinkedList;
public class ExampleTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Example");
sites.add("Taobao");
sites.add("Weibo");
// Utiliser removeLast() pour supprimer l'élément de queue
sites.removeLast();
System.out.println(sites);
}
}
La sortie de l'exemple ci-dessus est :
[Google, Example, Taobao]
Obtenir l'élément au début de la liste :
Exemple
import java.util.LinkedList;
public class ExampleTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Example");
sites.add("Taobao");
sites.add("Weibo");
// Utiliser getFirst() pour obtenir l'élément de tête
System.out.println(sites.getFirst());
}
}
La sortie de l'exemple ci-dessus est :
Obtenir l'élément à la fin de la liste :
Exemple
import java.util.LinkedList;
public class ExampleTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Example");
sites.add("Taobao");
sites.add("Weibo");
// Utiliser getLast() pour obtenir l'élément de queue
System.out.println(sites.getLast());
}
}
La sortie de l'exemple ci-dessus est :
Itération sur les éléments
Nous pouvons utiliser une boucle for avec la méthode size() pour parcourir les éléments de la liste :
Exemple
import java.util.LinkedList;
public class ExampleTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Example");
sites.add("Taobao");
sites.add("Weibo");
for (int size = sites.size(), i = 0; i < size; i++) {
System.out.println(sites.get(i));
}
}
}
La méthode size() est utilisée pour calculer la taille de la liste chaînée.
La sortie de l'exemple ci-dessus est :
Google Example Taobao Weibo
Vous pouvez également utiliser for-each pour parcourir les éléments :
Exemple
import java.util.LinkedList;
public class ExampleTest {
public static void main(String[] args) {
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Example");
sites.add("Taobao");
sites.add("Weibo");
for (String i : sites) {
System.out.println(i);
}
}
}
La sortie de l'exemple ci-dessus est :
Google Example Taobao Weibo
Méthodes courantes
| Méthode | Description |
|---|---|
| public boolean add(E e) | Ajoute un élément à la fin de la liste chaînée, renvoie un booléen indiquant si l'opération a réussi : true en cas de succès, false en cas d'échec. |
| public void add(int index, E element) | Insère un élément à la position spécifiée. |
| public boolean addAll(Collection extends E> c) | Ajoute tous les éléments d'une collection à la fin de la liste chaînée, renvoie un booléen indiquant si l'opération a réussi : true en cas de succès, false en cas d'échec. |
| public boolean addAll(int index, Collection extends E> c) | Ajoute tous les éléments d'une collection après la position spécifiée dans la liste chaînée, renvoie un booléen indiquant si l'opération a réussi : true en cas de succès, false en cas d'échec. |
| public void addFirst(E e) | Ajoute un élément en tête. |
| public void addLast(E e) | Ajoute un élément en queue. |
| public boolean offer(E e) | Ajoute un élément à la fin de la liste chaînée, renvoie si l’opération a réussi, true en cas de succès, false en cas d’échec. |
| public boolean offerFirst(E e) | Insère un élément en tête, renvoie si l’opération a réussi, true en cas de succès, false en cas d’échec. |
| public boolean offerLast(E e) | Insère un élément à la fin, renvoie si l’opération a réussi, true en cas de succès, false en cas d’échec. |
| public void clear() | Vide la liste chaînée. |
| public E removeFirst() | Supprime et renvoie le premier élément. |
| public E removeLast() | Supprime et renvoie le dernier élément. |
| public boolean remove(Object o) | Supprime un élément donné, renvoie si la suppression a réussi, true en cas de succès, false en cas d'échec. |
| public E remove(int index) | Supprime l'élément à la position spécifiée. |
| public E poll() | Supprime et renvoie le premier élément. |
| public E remove() | Supprime et renvoie le premier élément. |
| public boolean contains(Object o)</td> | Détermine s'il contient un élément donné. |
| public E get(int index) | Renvoie l'élément à la position spécifiée. |
| public E getFirst() | Renvoie le premier élément. |
| public E getLast() | Renvoie le dernier élément. |
| public int indexOf(Object o) | Trouve l'indice de la première occurrence de l'élément spécifié, de l'avant vers l'arrière. |
| public int lastIndexOf(Object o) | Trouve l'indice de la dernière occurrence de l'élément spécifié. |
| public E peek() | Renvoie le premier élément. |
| public E element() | Renvoie le premier élément. |
| public E peekFirst() | Renvoie l'élément de tête. |
| public E peekLast() | Renvoie l'élément de queue. |
| public E set(int index, E element) | Définit l'élément à la position spécifiée. |
| public Object clone() | Clone cette liste. |
|
public Iterator | Renvoie un itérateur en ordre inverse. |
| public int size() | Renvoie le nombre d'éléments dans la liste chaînée. |
|
public ListIterator | Renvoie un itérateur commençant à la position spécifiée jusqu'à la fin. |
| public Object[] toArray() | Renvoie un tableau composé des éléments de la liste chaînée. |
|
public | Renvoie un tableau créé en convertissant le type des éléments de la liste chaînée. |
Pour plus de méthodes API, vous pouvez consulter :https://www.example.com/manual/jdk11api/java.base/java/util/LinkedList.html
Autres extensions
Java Collections Framework