В Java (но аналогично и в PHP) реализация ArrayDeque всегда имеет емкость, выраженную в степени 2:
http://hg.openjdk .java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/util/ArrayDeque.java#l126
Для HashMap этот выбор очевиден — иметь равномерное распределение элементов на основе урезанного 32-битного хеша. Но Deque вставляет/удаляет элементы последовательно.
Кроме того, ArrayList не ограничивает свою емкость степенью двойки, а просто обеспечивает ее соответствие наименьшее количество элементов.
Итак, почему реализация Deque требует, чтобы ее емкость была степенью 2?< /п>
Подробнее здесь: https://stackoverflow.com/questions/567 ... wer-of-two