Коротка відповідь
Тому що ємність ArrayDeque повинна бути потужністю дві, а 16 - найменша потужність двох, що становить принаймні 10.
ArrayDeque потрібно використовувати багато% операцій скрізь, щоб обернутися навколо лінійного масиву, який видається круговим.
a % b
можна виразити так, a & (b - 1)
ніби b
це сила двох. Побіт AND значно більший, тому ємність ArrayDeque обмежена потужністю два. Усі% операцій виконуються з бітмейкінгом замість фактичного% у реалізації.
Це також, чому новіший HashMap не використовує розміри таблиці простих чисел, а потужність двох , знову ж таки тому, що операцію% потрібно виконувати так часто і побіжно, і це набагато швидше.
Отже, якщо базова лінія дорівнює 10, то структури, які мають потужність двох обмежень, повинні використовувати 16, бо це найменша потужність з двох, що становить принаймні 10.