ArrayDeque. Смысл степени двойки в длине внутренного массива

0
27 апр 2016 12:52
Изучив данный класс я нашел лишь одну причину для такого размера - это использование довольно изящной конструкции для циклического прохода по массиву:
elements[tail] = e;
if ( (tail = (tail + 1) & (elements.length - 1)) == head)
    doubleCapacity();

Но необходимость такого решения мне кажется сомнительной. Ведь это ничем ни хуже:
if (++tail == elements.length) 
    tail = 0;
if (tail == head) 
    doubleCapacity();

И самое главное вариант со степенью двойки в худшем случае может задействовать памяти в 2 раза больше, чем нужно.
Так зачем здесь нужна степень двойки? Я что-то упустил в реализации?
Модераторы: Нет
Сейчас эту тему просматривают: Нет