Método Java LinkedList peek()

Java LinkedList Java LinkedList


peek()El método es, en Java,LinkedListun método muy útil proporcionado por la clase, que se utiliza para recuperar, pero no eliminar, el primer elemento (elemento cabecera) de la lista enlazada. Este método pertenece aQueuelas operaciones de la interfaz,LinkedListimplementa esta interfaz.

Sintaxis del método:

public E peek()

Valor de retorno:

  • Si la lista enlazada no está vacía, devuelve el primer elemento de la lista
  • Si la lista enlazada está vacía, devuelvenull

Características del método

Operación no destructiva

peek()El método solo "observa" el primer elemento de la lista enlazada, sin eliminarlo. Esto es diferente delpoll()oremove()método, que elimina el elemento.

Seguridad ante listas vacías

Cuando la lista enlazada está vacía,peek()devuelvenullsin lanzar una excepción, lo que lo hace, en ciertos escenarios, más seguro quegetFirst()oelement()más seguro.

Complejidad temporal

Dado queLinkedListestá implementado sobre una lista doblemente enlazada,peek()la complejidad temporal del método es O(1), ya que solo necesita acceder al nodo principal.


Ejemplo de uso

Ejemplo básico

Ejemplo

import java.util.LinkedList;

public class PeekExample {
    public static void main(String[] args) {
        LinkedList<String> fruits = new LinkedList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");
       
        // Usar peek() para ver el primer elemento
        String firstFruit = fruits.peek();
        System.out.println("First fruit: " + firstFruit);  // Salida: First fruit: Apple
        System.out.println("LinkedList after peek(): " + fruits);  // Salida: [Apple, Banana, Cherry]
    }
}

Ejemplo con lista vacía

Ejemplo

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("First number: " + firstNumber);  // Salida: First number: null
    }
}

Comparación con otros métodos similares

peek() vs getFirst()

Método Comportamiento con lista vacía Lanza una excepción
peek() Devuelve null no
getFirst() Lanza NoSuchElementException Sí

4.2 peek() vs element()

Método Comportamiento con lista vacía Lanza una excepción
peek() Devuelve null no
element() Lanza NoSuchElementException Sí

4.3 peek() vs poll()

Método ¿Elimina el elemento? Comportamiento con lista vacía
peek() no Devuelve null
poll() Sí Devuelve null

Escenarios de aplicación práctica

Procesamiento de colas de mensajes

Al procesar colas de mensajes, a menudo necesitamos examinar el mensaje en la cabecera de la cola sin eliminarlo:

Ejemplo

LinkedList<Message> messageQueue = new LinkedList<>();
// ... añadir mensajes a la cola

// Comprobar sin eliminar el primer mensaje
Message nextMessage = messageQueue.peek();
if (nextMessage != null && nextMessage.isHighPriority()) {
    // Procesar mensajes de alta prioridad
}

Sistema de programación de tareas

En un sistema de programación de tareas,peek()se puede utilizar para comprobar la siguiente tarea a ejecutar:

Ejemplo

LinkedList<Task> taskQueue = new LinkedList<>();
// ... añadir tareas a la cola

Task nextTask = taskQueue.peek();
if (nextTask != null && nextTask.isReadyToExecute()) {
    // Ejecutar la tarea
}

Historial del navegador

Simula la visualización de la página visitada más recientemente sin eliminarla del historial:

Ejemplo

LinkedList<String> browserHistory = new LinkedList<>();
// ... añadir registros de visitas

String lastVisited = browserHistory.peek();
System.out.println(Página visitada más recientemente: + lastVisited);

Notas

  1. Manejo de valores nulos: Dado quepeek()puede devolvernull, antes de usar el valor de retorno se debe realizar una comprobación de valores nulos para evitarNullPointerException。

  2. Entornos concurrentes:LinkedListno es seguro para hilos; si se usa en un entorno de subprocesos múltiplespeek(), se necesitan medidas de sincronización adicionales.

  3. Consideraciones de rendimiento: Aunquepeek()la operación en sí es O(1), pero si se invoca con frecuencia junto con otras operaciones, puede ser necesario considerar una estructura de datos más eficiente.

  4. Comparación con operaciones de pila: EnLinkedListcuando se usa como pila,peek()se observa el primer elemento (cima de la pila), lo que coincide conStackel método de la clasepeek()cuyo comportamiento es consistente.

Java LinkedList Java LinkedList

Otras extensiones