Java LinkedList - различия между операциями извлечения - программирование
Подтвердить что ты не робот

Java LinkedList - различия между операциями извлечения

Существуют ли различия между различными методами в каждой из следующих групп операций извлечения элементов в LinkedList?

Возвращение операций удаления null +: poll(), pollFirst().

Возврат null + не удаление операций: peek(), peekFirst().

Выбрасывание исключений + операции удаления: pop(), remove(), removeFirst().

Выбрасывание исключений + удаление операций: element(), getFirst().

Подобные дублирования существуют в методах ввода.

Если нет такой разницы, я бы ожидал, что это будет упомянуто в javadoc методов (что-то вроде старого старого "Это точно так же, как вызов..." ). Это всего лишь небольшая документация, или я ничего не пропустил?

4b9b3361

Ответ 1

Между ними нет никакой разницы, и он также указан в документации, но вам нужно сделать какой-то рекурсивный поиск, чтобы добраться туда.

LinkedList реализует два интерфейса - Queue и Deque. И Deque продолжается от Queue.

Теперь Deque определил метод - Deque#pollFirst() и унаследовал метод - Queue#poll().

Итак, LinkedList имеет в основном эти два метода, определенные для двух интерфейсов, которые он реализует.

И о сходстве между этими двумя методами, он указан в документации Deque как:

Этот интерфейс расширяет интерфейс Queue. Когда deque используется как очередь, результаты FIFO (First-In-First-Out). Добавлены элементы в конце deque и удалены с самого начала. Методы унаследованные от интерфейса Queue, точно эквивалентны Deque методы, указанные в следующей таблице:

И есть таблица, в которой перечислены методы класса Queue и эквивалентный метод Deque. См. Deque#poll(), Deque#peek(), например. Они четко перечисляют эквивалентный метод.

Ответ 2

Разница между ними - это версия, с которой они были выпущены, и интерфейсы, которые реализует LinkedList.

Пример на основе poll() и pollFirst():

LinkedList был выпущен вместе с Java 1.2.

Так как 1.5 LinkedList реализует интерфейс Queue, который имеет

public E poll() 

Начиная с версии 1.6 LinkedList реализует интерфейс Deque, который имеет

public E pollFirst()

изменить: Важно сохранить прежнюю реализацию из-за обратной совместимости.

Ответ 3

Ваше право, это плохая документация или что-то в этом роде.

PEEK() Извлекает, но не удаляет головку (первый элемент) этого списка.

peekFirst() Извлекает, но не удаляет, первый элемент этого списка, или возвращает null, если этот список пуст.

Это то, что он говорит, и я прочитал здесь в своей книге Java, что голова - это первый элемент в списке.