Méthode clear() de Java LinkedList
clear()La méthode est une méthode couramment utilisée en JavaLinkedListfournie par la classe, utilisée pour supprimer tous les éléments de la liste chaînée. Après avoir appelé cette méthode, la liste chaînée devient une liste vide.
Syntaxe de la méthode
public void clear()
Description de la méthode
clear()Les fonctions principales de la méthode sont :
- Remove
LinkedListtous les éléments dans - Réinitialiser la taille de la liste chaînée à 0
- N'affecte pas la capacité de la liste chaînée, car
LinkedListil n'y a pas de limite de capacité
Exemples d'utilisation
Utilisation de base
Exemple
import java.util.LinkedList;
public class ClearExample {
public static void main(String[] args) {
// Créer une LinkedList
LinkedList<String> fruits = new LinkedList<>();
// Ajouter des éléments
fruits.add("Pomme");
fruits.add("Banane");
fruits.add("Cherry");
System.out.println("LinkedList avant effacement : " + fruits);
System.out.println("Taille avant effacement : " + fruits.size());
// Utilisez la méthode clear() pour vider la liste chaînée
fruits.clear();
System.out.println("LinkedList après effacement : " + fruits);
System.out.println("Taille après effacement : " + fruits.size());
}
}
public class ClearExample {
public static void main(String[] args) {
// Créer une LinkedList
LinkedList<String> fruits = new LinkedList<>();
// Ajouter des éléments
fruits.add("Pomme");
fruits.add("Banane");
fruits.add("Cherry");
System.out.println("LinkedList avant effacement : " + fruits);
System.out.println("Taille avant effacement : " + fruits.size());
// Utilisez la méthode clear() pour vider la liste chaînée
fruits.clear();
System.out.println("LinkedList après effacement : " + fruits);
System.out.println("Taille après effacement : " + fruits.size());
}
}
Sortie :
清空前的链表: [Apple, Banana, Cherry] 清空前的大小: 3 清空后的链表: [] 清空后的大小: 0
Principe d'implémentation
Dans l'implémentation de JavaLinkedListimplémentation,clear()la méthode fonctionne selon les étapes suivantes :
- Parcourir tous les nœuds de la liste chaînée
- Définir les références de prédécesseur et de successeur de chaque nœud à null
- Définir le nœud de tête (premier) et le nœud de queue (dernier) de la liste chaînée à null
- Définir la taille de la liste chaînée à 0
Cette approche d'implémentation aide le ramasse-miettes à récupérer les objets nœud qui ne sont plus utilisés.
Caractéristiques de la méthode
- Complexité temporelle: O(n) - nécessite de parcourir tous les nœuds
- Complexité spatiale: O(1) - aucun espace de stockage supplémentaire nécessaire
- Sécurité des threads: non thread-safe, nécessite une synchronisation externe dans un environnement multithread
- Valeur de retour: Aucune (void)
Notes
- Après avoir appelé
clear()la méthode, tous les éléments de la liste chaînée seront supprimés et ne pourront pas être récupérés. - Si la liste chaînée est partagée par plusieurs références, toutes les références verront l'effet de l'effacement de la liste chaînée.
- Après avoir vidé la liste chaînée, de nouveaux éléments peuvent être ajoutés.
- et
new LinkedList<>()Contrairement à la création d'une nouvelle instance,clear()la méthode réutilise l'objet existant.
Comparaison avec d'autres méthodes
| Méthode | Fonction | Complexité temporelle | Si elle modifie la liste chaînée d'origine |
|---|---|---|---|
| clear() | Effacer tous les éléments | O(n) | Oui |
| removeAll() | Supprimer tous les éléments de la collection spécifiée | O(n*m) | Oui |
| new LinkedList<>() | Créer une nouvelle liste chaînée vide | O(1) | non |
Scénarios d'application pratiques
clear()La méthode est particulièrement utile dans les scénarios suivants :
- Réutilisation des objets de liste chaînée: Lorsque vous devez réutiliser le même objet de liste chaînée
- Gestion de la mémoire: Lorsque vous devez libérer la mémoire occupée par la liste chaînée
- Réinitialisation de l'état: Lorsque vous devez réinitialiser l'état de la liste chaînée pendant les algorithmes ou le traitement des données
Exemple
// Exemple d'application pratique : traitement de données par lots
LinkedList<Data> dataBuffer = new LinkedList<>();
// Phase 1 : Collecte des données
collectData(dataBuffer);
// Traiter les données
processData(dataBuffer);
// Vider le tampon pour préparer le prochain lot de données
dataBuffer.clear();
// Phase 2 : Collecter de nouvelles données
collectData(dataBuffer);
LinkedList<Data> dataBuffer = new LinkedList<>();
// Phase 1 : Collecte des données
collectData(dataBuffer);
// Traiter les données
processData(dataBuffer);
// Vider le tampon pour préparer le prochain lot de données
dataBuffer.clear();
// Phase 2 : Collecter de nouvelles données
collectData(dataBuffer);
En utilisant laclear()méthode de manière appropriée, vous pouvez améliorer l'efficacité et la lisibilité de votre code.
Java LinkedList