Método poll() de 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 null
null
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
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
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.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:
- Procesamiento de colas: cuando se usa
LinkedListcomo cola,poll()es la operación estándar de desencolado. - Programación de tareas: procesar una lista de tareas, sacando la primera tarea para ejecutarla cada vez.
- Búsqueda en anchura: en algoritmos de recorrido de grafos o árboles, se usa para sacar de la cola el siguiente nodo a procesar.
- Procesamiento de mensajes: en una cola de mensajes, se toma y procesa el siguiente mensaje.
Notas importantes
- Manejo de listas vacías: a diferencia del
remove()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. - Tipos genéricos: asegúrate de manejar correctamente el tipo del valor de retorno, evitando
ClassCastException。 - 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