#java #list #null #queue #add
#java #Список #null #очередь #Добавить
Вопрос:
Для начала, List
упорядоченная коллекция, которая позволяет вставлять нулевые элементы. С другой стороны Queue
, это коллекция LIFO или FIFO, которая обычно не допускает нулевых элементов. LinkedList
реализует оба List
и Queue
и, таким образом, является единственной Queue
реализацией, которая допускает null в качестве элемента.
Предположим, что причина, по которой недопустимо использование null, заключается в Queue
том, что такие методы, как poll() или peek(), могут возвращать null как:
- больше элементов нет
- null как элемент
* Это обычный ответ в stackoverflow на вопрос «Почему null не разрешено в очереди».
Зная, что проблема null может вызвать нас Queue
, любой программист может создать эту логику:
if (!queue.isEmpty()){
queue.poll();
}
Используя логику, которую я только что предоставил, мы можем легко сказать, что если мы получим null в качестве возвращаемого значения, оно на 100% будет значением элемента, а не null в качестве пустой очереди. Итак, я должен спросить еще раз, какова истинная причина запрета null Queue
? Я что-то еще упускаю?
Комментарии:
1. Вы всегда можете использовать необязательные элементы, если вам действительно нужны нулевые элементы.
2. Мне больше любопытна причина такого решения, чем моя собственная реализация. Одно правило, которому я следую: понимать, почему что-то работает, а не только как это работает 😉
3. Я не нашел этих причин. Может быть, прокомментируйте, чтобы мы могли чему-то научиться из этого?
4. Причина в том, что вы сами указали:
poll
предназначен для возвратаnull
, когда в очереди не осталось элемента. Точка. Вот как это было разработано, и это то, что мы получаем. Тот факт, что у вас может быть обходной путь для этого, не имеет значения.