Почему Java предоставляет два метода для удаления элемента из Очереди?

Queue реализация в Java имеет два метода для удаления элемента, Каждый remove() который выдает исключение, и другой poll() который возвращается null для пустой очереди. У меня есть два сомнения:

  1. Почему Queue имеет другая реализация для удаления элемента?
  2. Какую реализацию использовать, Когда?
27
задан palacsint 30 March 2014 в 18:01
поделиться

5 ответов

Абстрактный класс AbstractQueue реализует Queue и определите метод удаления.

Вы можете взглянуть на исходный код:

public E remove() {
    E x = poll();
    if (x != null)
        return x;
    else
        throw new NoSuchElementException();
}

Итак, как видите, метод remove () использует метод poll () .

Вы можете использовать тот, который вам больше нравится.

15
ответ дан 28 November 2019 в 05:04
поделиться

Кэширование.

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

-121--673918-

Используйте функцию not с функцией contains.

Пример: not (содержит ('XML', 'XM'))

Результат: false

http://www.w3schools.com/Xpath/xpath_functions.asp

-121--1886410-

Когда вы знаете, как реагировать прямо сейчас и/или ожидать, что элементы будут отсутствовать, используйте опрос.

В противном случае используйте remove.

4
ответ дан 28 November 2019 в 05:04
поделиться

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

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

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

24
ответ дан 28 November 2019 в 05:04
поделиться

Иногда нужно вернуть нулевое значение для пустой очереди, а иногда - рассматривать пустую очередь как случай исключения.

1
ответ дан 28 November 2019 в 05:04
поделиться

Эти два метода по-разному используются в классических дискуссиях о структуре очереди. Я использую функцию poll() в основном для извлечения элементов, и remove() в основном, если мне нужно изменить очередь вне нормального цикла.

0
ответ дан 28 November 2019 в 05:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: