Méthode peek() de Java LinkedList

Java LinkedList Java LinkedList


peek()La méthode est, en Java,LinkedListune méthode très utile fournie par la classe. Elle est utilisée pour récupérer sans supprimer le premier élément (élément de tête) de la liste chaînée. Cette méthode appartient àQueueaux opérations de l'interface,LinkedListet LinkedList implémente cette interface.

Syntaxe de la méthode:

public E peek()

Valeur de retour:

  • Si la liste chaînée n'est pas vide, renvoie le premier élément de la liste chaînée
  • Si la liste chaînée est vide, renvoie nullnull

Caractéristiques de la méthode

Opération non destructive

peek()La méthode ne fait que « consulter » le premier élément de la liste chaînée sans le supprimer. Cela diffère depoll()ouremove()la méthode remove(), qui supprime l'élément.

Sécurité null

Lorsque la liste chaînée est vide,peek()peek() renvoie nullnullet ne lève pas d'exception, ce qui la rend plusgetFirst()ouelement()sûre que element() dans certains scénarios.

Complexité temporelle

PuisqueLinkedListLinkedList est implémentée sur la base d'une liste doublement chaînée,peek()la complexité temporelle de la méthode est O(1), car elle ne doit accéder qu'au nœud de tête.


Exemples d’utilisation

Exemple de base

Exemple

import java.util.LinkedList;

public class PeekExample {
    public static void main(String[] args) {
        LinkedList<String> fruits = new LinkedList<>();
        fruits.add("Pomme");
        fruits.add("Banane");
        fruits.add("Cherry");
       
        // Utiliser peek() pour voir le premier élément
        String firstFruit = fruits.peek();
        System.out.println("Premier fruit : " + firstFruit);  // Sortie : Premier fruit : Apple
        System.out.println("LinkedList après peek() : " + fruits);  // Sortie : [Apple, Banana, Cherry]
    }
}

Exemple de liste chaînée vide

Exemple

import java.util.LinkedList;

public class EmptyListPeek {
    public static void main(String[] args) {
        LinkedList<Integer> numbers = new LinkedList<>();
       
        Integer firstNumber = numbers.peek();
        System.out.println("Premier nombre : " + firstNumber);  // Sortie : Premier nombre : null
    }
}

Comparaison avec d'autres méthodes similaires

peek() vs getFirst()

Méthode Comportement sur une liste chaînée vide Lève une exception
peek() Retourne null non
getFirst() Lève NoSuchElementException Oui

4.2 peek() vs element()

Méthode Comportement sur une liste chaînée vide Lève une exception
peek() Retourne null non
element() Lève NoSuchElementException Oui

4.3 peek() vs poll()

Méthode Indique s'il supprime des éléments Comportement sur une liste chaînée vide
peek() non Retourne null
poll() Oui Retourne null

Scénarios d'application pratiques

Traitement de file de messages

Lors du traitement d'une file de messages, nous devons souvent consulter le message en tête de file sans le supprimer :

Exemple

LinkedList<Message> messageQueue = new LinkedList<>();
// ... ajouter des messages à la file

// Vérifier mais ne pas supprimer le premier message
Message nextMessage = messageQueue.peek();
if (nextMessage != null && nextMessage.isHighPriority()) {
    // Traiter les messages de haute priorité
}

Système d'ordonnancement des tâches

Dans un système d'ordonnancement des tâches,peek()peek() peut être utilisé pour vérifier la prochaine tâche à exécuter :

Exemple

LinkedList<Task> taskQueue = new LinkedList<>();
// ... ajouter des tâches à la file d'attente

Task nextTask = taskQueue.peek();
if (nextTask != null && nextTask.isReadyToExecute()) {
    // Exécuter la tâche
}

Historique de navigation

Simuler l'affichage de la page la plus récemment visitée dans un navigateur sans la retirer de l'historique :

Exemple

LinkedList<String> browserHistory = new LinkedList<>();
// ... ajouter des enregistrements de visite

String lastVisited = browserHistory.peek();
System.out.println("Page la plus récemment visitée : " + lastVisited);

Notes

  1. Gestion des valeurs nulles: Commepeek()peek() peut retourner nullnull, vous devez effectuer une vérification de nullité avant d’utiliser la valeur de retour pour éviterNullPointerException。

  2. Environnement concurrent:LinkedListLinkedList n’est pas thread-safe. Si elle est utilisée dans un environnement multithread,peek(), des mesures de synchronisation supplémentaires sont nécessaires.

  3. Considérations de performance: Bien quepeek()l’opération elle-même est O(1), si elle est appelée fréquemment avec d’autres opérations, vous devrez peut-être envisager des structures de données plus efficaces.

  4. Comparaison avec les opérations de pile: LorsqueLinkedListLinkedList est utilisée comme une pile,peek()peek() consulte le premier élément (sommet de la pile), ce qui est identique àStackcelui de la classe Stackpeek()Comportement de la méthode peek().

Java LinkedList Java LinkedList

Autres extensions