Método poll() de Java LinkedList

Java LinkedList Java LinkedList


poll()El método es, en Java,LinkedListun método muy útil proporcionado por la clase, que se utiliza para recuperar y eliminar el primer elemento (elemento head) de la lista. Este método pertenece aQueueparte de la interfaz,LinkedListimplementa esta interfaz, por lo tanto puede usarse como cola.

Sintaxis del método:

public E poll()

Valor de retorno:

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

Características del método

Comparación con métodos similares

En Java,LinkedListhay varios métodos similares que se pueden usar para obtener y eliminar el elemento head:

Método Descripción del comportamiento Comportamiento con lista vacía
poll() Recupera y elimina el elemento head Devuelve null
remove() Recupera y elimina el elemento head Lanza NoSuchElementException
pop() Recupera y elimina el elemento head (operación de pila) Lanza NoSuchElementException
pollFirst() Recupera y elimina el primer elemento (igual que poll()) Devuelve null

Complejidad temporal

poll()La complejidad temporal del método es O(1), porque solo elimina y devuelve el primer elemento de la lista, sin necesidad de recorrer toda la lista.


Ejemplo de uso

Uso básico

Ejemplo

import java.util.LinkedList;

public class PollExample {
    public static void main(String[] args) {
        // Crear un LinkedList
        LinkedList<String> fruits = new LinkedList<>();
       
        // Agregar elementos
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");
       
        System.out.println("Lista original: " + fruits);  // Salida: [Apple, Banana, Cherry]
       
        // Usar el método poll()
        String firstFruit = fruits.poll();
       
        System.out.println("Elemento eliminado: " + firstFruit);  // Salida: Apple
        System.out.println("Lista actualizada: " + fruits);    // Salida: [Banana, Cherry]
    }
}

Manejo de listas vacías

Ejemplo

import java.util.LinkedList;

public class EmptyListExample {
    public static void main(String[] args) {
        LinkedList<String> emptyList = new LinkedList<>();
       
        // Usar poll() en una lista vacía
        String result = emptyList.poll();
       
        System.out.println("El resultado es: " + result);  // Salida: null
    }
}

Uso en operaciones de cola

Ejemplo

import java.util.LinkedList;
import java.util.Queue;

public class QueueExample {
    public static void main(String[] args) {
        // Usar LinkedList como Queue
        Queue<Integer> queue = new LinkedList<>();
       
        // Operación de encolar
        queue.offer(10);
        queue.offer(20);
        queue.offer(30);
       
        System.out.println("Contenido de la cola: " + queue);  // Salida: [10, 20, 30]
       
        // Operación de desencolar
        while (!queue.isEmpty()) {
            int num = queue.poll();
            System.out.println("Procesando: " + num);
        }
       
        System.out.println("Estado final de la cola: " + queue);  // Salida: []
    }
}

Escenarios de aplicación práctica

poll()El método es especialmente útil en los siguientes escenarios:

  1. Procesamiento de colas: cuando se usaLinkedListcomo cola,poll()es la operación estándar de desencolado.
  2. Programación de tareas: procesar una lista de tareas, sacando la primera tarea para ejecutarla cada vez.
  3. Búsqueda en anchura: en algoritmos de recorrido de grafos o árboles, se usa para sacar de la cola el siguiente nodo a procesar.
  4. Procesamiento de mensajes: en una cola de mensajes, se toma y procesa el siguiente mensaje.

Notas importantes

  1. Manejo de listas vacías: a diferencia delremove()método,poll()cuando la lista está vacía, no lanza una excepción, sino que devuelve nullnull. Esto lo hace más adecuado para usarse cuando no se está seguro de si la lista está vacía.
  2. Tipos genéricos: asegúrate de manejar correctamente el tipo del valor de retorno, evitandoClassCastException。
  3. Entorno concurrente:LinkedListno es seguro para hilos; si se usa en un entorno multihilo, hay que considerar la sincronización.

Al dominarpoll()el método, puedes usar de manera más eficazLinkedListcomo cola, para escribir código Java más conciso y robusto.

Java LinkedList Java LinkedList

Otras extensiones