Метод poll() класса LinkedList в Java

Java LinkedList Java LinkedList


poll()Метод находится в JavaLinkedListочень полезный метод, предоставляемый классом, используемый для извлечения и удаления первого элемента (головного элемента) списка. Этот метод принадлежитQueueчасть интерфейса,LinkedListреализует этот интерфейс, поэтому его можно использовать как очередь.

Синтаксис метода:

public E poll()

Возвращаемое значение:

  • Если список не пуст, возвращает первый элемент списка
  • Если список пуст, возвращаетnull

Характеристики метода

Сравнение с аналогичными методами

В JavaLinkedListесть несколько похожих методов, которые можно использовать для извлечения и удаления головного элемента:

Метод Описание поведения Поведение, когда список пуст
poll() Извлекает и удаляет головной элемент Возвращает null
remove() Извлекает и удаляет головной элемент Выбрасывает NoSuchElementException
pop() Извлекает и удаляет головной элемент (стековая операция) Выбрасывает NoSuchElementException
pollFirst() Извлекает и удаляет первый элемент (то же, что и poll()) Возвращает null

Временная сложность

poll()Временная сложность метода равна O(1), потому что он только удаляет и возвращает первый элемент списка, не проходя по всему списку.


Примеры использования

Базовое использование

Пример

import java.util.LinkedList;

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]
    }
}

Обработка пустых списков

Пример

import java.util.LinkedList;

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.LinkedList;
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()Метод особенно полезен в следующих сценариях:

  1. Обработка очереди: при использованииLinkedListкак очередь,poll()является стандартной операцией извлечения из очереди.
  2. Планирование задач: обработка списка задач, при которой каждый раз берётся первая задача для выполнения.
  3. Поиск в ширину: В алгоритмах обхода графов или деревьев используется для извлечения из очереди следующего узла для обработки.
  4. Обработка сообщений: В очереди сообщений извлекается и обрабатывается следующее сообщение.

Примечания

  1. Обработка пустого списка: В отличие отremove()метод,poll()не выбрасывает исключение, когда список пуст, а вместо этого возвращаетnull. Это делает его более подходящим для использования, когда вы не уверены, пуст ли список.
  2. Обобщённые типы: Убедитесь, что тип возвращаемого значения обрабатывается правильно, чтобы избежатьClassCastException。
  3. Параллельная среда:LinkedListне является потокобезопасным; при использовании в многопоточной среде необходимо учитывать вопросы синхронизации.

Освоивpoll()метод, вы можете более эффективно использоватьLinkedListв качестве очереди и писать более чистый и надёжный Java-код.

Java LinkedList Java LinkedList

Другие расширения