Метод poll() класса LinkedList в Java
poll()Метод находится в JavaLinkedListочень полезный метод, предоставляемый классом, используемый для извлечения и удаления первого элемента (головного элемента) списка. Этот метод принадлежитQueueчасть интерфейса,LinkedListреализует этот интерфейс, поэтому его можно использовать как очередь.
Синтаксис метода:
public E poll()
Возвращаемое значение:
- Если список не пуст, возвращает первый элемент списка
- Если список пуст, возвращает
null
Характеристики метода
Сравнение с аналогичными методами
В JavaLinkedListесть несколько похожих методов, которые можно использовать для извлечения и удаления головного элемента:
| Метод | Описание поведения | Поведение, когда список пуст |
|---|---|---|
| poll() | Извлекает и удаляет головной элемент | Возвращает null |
| remove() | Извлекает и удаляет головной элемент | Выбрасывает NoSuchElementException |
| pop() | Извлекает и удаляет головной элемент (стековая операция) | Выбрасывает NoSuchElementException |
| pollFirst() | Извлекает и удаляет первый элемент (то же, что и poll()) | Возвращает null |
Временная сложность
poll()Временная сложность метода равна O(1), потому что он только удаляет и возвращает первый элемент списка, не проходя по всему списку.
Примеры использования
Базовое использование
Пример
public class PollExample {
public static void main(String[] args) {
// Создаём LinkedList
LinkedList<String> fruits = new LinkedList<>();
// Добавить элементы
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
System.out.println("Исходный список: " + fruits); // Вывод: [Apple, Banana, Cherry]
// Используйте метод poll()
String firstFruit = fruits.poll();
System.out.println("Удалённый элемент: " + firstFruit); // Вывод: Apple
System.out.println("Обновлённый список: " + fruits); // Вывод: [Banana, Cherry]
}
}
Обработка пустых списков
Пример
public class EmptyListExample {
public static void main(String[] args) {
LinkedList<String> emptyList = new LinkedList<>();
// Используйте poll() для пустого списка
String result = emptyList.poll();
System.out.println("Результат: " + result); // Вывод: null
}
}
Использование в операциях с очередью
Пример
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
// Использовать LinkedList как очередь
Queue<Integer> queue = new LinkedList<>();
// Операция постановки в очередь
queue.offer(10);
queue.offer(20);
queue.offer(30);
System.out.println("Содержимое очереди: " + queue); // Вывод: [10, 20, 30]
// Операция извлечения из очереди
while (!queue.isEmpty()) {
int num = queue.poll();
System.out.println("Обработано: " + num);
}
System.out.println("Итоговое состояние очереди: " + queue); // Вывод: []
}
}
Практические сценарии применения
poll()Метод особенно полезен в следующих сценариях:
- Обработка очереди: при использовании
LinkedListкак очередь,poll()является стандартной операцией извлечения из очереди. - Планирование задач: обработка списка задач, при которой каждый раз берётся первая задача для выполнения.
- Поиск в ширину: В алгоритмах обхода графов или деревьев используется для извлечения из очереди следующего узла для обработки.
- Обработка сообщений: В очереди сообщений извлекается и обрабатывается следующее сообщение.
Примечания
- Обработка пустого списка: В отличие от
remove()метод,poll()не выбрасывает исключение, когда список пуст, а вместо этого возвращаетnull. Это делает его более подходящим для использования, когда вы не уверены, пуст ли список. - Обобщённые типы: Убедитесь, что тип возвращаемого значения обрабатывается правильно, чтобы избежать
ClassCastException。 - Параллельная среда:
LinkedListне является потокобезопасным; при использовании в многопоточной среде необходимо учитывать вопросы синхронизации.
Освоивpoll()метод, вы можете более эффективно использоватьLinkedListв качестве очереди и писать более чистый и надёжный Java-код.
Java LinkedList