Как уже упоминалось другими авторами, у вас есть ошибка "off-by-one", также называемая ошибкой забора.
Кроме того, вы можете упростить ваш метод isEmpty()
следующим образом:
public boolean isEmpty() {
return end == 0;
}
Я предполагаю, что когда end
равно нулю, это означает, что в деке нет элементов. Вы не должны проверять deque.length
, потому что это просто говорит вам, сколько элементов может хранить массив, а не сколько в настоящее время в массиве.