Метод peekFirst() в Java LinkedList

Java LinkedList Java LinkedList


peekFirst()Метод является вспомогательным методом, предоставляемымLinkedListклассом в Java, используемым для получения, но не удаления первого элемента связного списка. Если связный список пуст, он возвращаетnull。

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

public E peekFirst()

Особенности метода

  1. Неразрушающая операция: В отличие отpollFirst()илиremoveFirst()некоторых методов,peekFirst()он не изменяет содержимое связного списка
  2. Быстрый доступ: временная сложность — O(1), потому что LinkedList напрямую хранит ссылку на головной узел
  3. Безопасный доступ: когда связный список пуст, он возвращаетnullвместо выброса исключения

Сценарии использования

peekFirst()Этот метод особенно подходит для следующих случаев:

  1. Когда нужно проверить головной элемент очереди, но не хотите его удалять
  2. Чтобы просмотреть следующий элемент для обработки перед извлечением из очереди
  3. При реализации функциональности мониторинга или логирования

Примеры кода

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

Пример

import java.util.LinkedList;

public class PeekFirstExample {
    public static void main(String[] args) {
        LinkedList<String> fruits = new LinkedList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");
       
        // Просмотреть, но не удалять первый элемент
        String firstFruit = fruits.peekFirst();
        System.out.println("Первый фрукт: " + firstFruit);  // Вывод: Первый фрукт: Apple
        System.out.println("LinkedList после peek: " + fruits);  // Вывод: [Apple, Banana, Cherry]
    }
}

Пример обработки пустого связного списка

Пример

import java.util.LinkedList;

public class EmptyListExample {
    public static void main(String[] args) {
        LinkedList<Integer> numbers = new LinkedList<>();
       
        // Безопасно обработать пустой связный список
        Integer firstNumber = numbers.peekFirst();
        if (firstNumber == null) {
            System.out.println("Список пуст");
        } else {
            System.out.println("Первое число: " + firstNumber);
        }
    }
}

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

Название метода Функция Поведение при пустом связанном списке Изменяет ли это связный список
peekFirst() Просмотр первого элемента возвращаетnull нет
getFirst() Получить первый элемент throwsNoSuchElementException нет
pollFirst() Удалить и вернуть первый элемент возвращаетnull Да
removeFirst() Удалить и вернуть первый элемент throwsNoSuchElementException Да

Лучшие практики

  1. Если вы не уверены, пуст ли связный список, предпочитайте использоватьpeekFirst()а неgetFirst()
  2. Если вам нужно одновременно просмотреть и удалить элемент, рассмотрите возможность использованияpollFirst()для повышения эффективности
  3. При использовании в конкурентной среде,peekFirst()требуются дополнительные меры синхронизации

ЧАВО

Q1: peekFirst()иpeek()В чём разница?

peek()иpeekFirst()Функциональность в LinkedList точно такая же,peek()он предоставлен для поддержания согласованности с интерфейсом Queue.

Вопрос 2: ПочемуpeekFirst()возвращаетnullвместо выбрасывания исключения?

Такая конструкция позволяет более гибко обрабатывать ситуации с пустым связным списком, особенно подходит для сценариев операций с очередью и позволяет избежать лишнего кода обработки исключений.

Q3: Использование в многопоточной средеpeekFirst()Это безопасно?

LinkedList не является потокобезопасным. Если вам нужно использовать его в многопоточной среде, рассмотрите возможность использованияCollections.synchronizedList()обёртывания или переключения наConcurrentLinkedDeque。

Java LinkedList Java LinkedList

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