Resposta curta
Como a capacidade do ArrayDeque deve ser uma potência de dois e 16 é a menor potência de dois que é pelo menos 10.
O ArrayDeque precisa usar muitas% de operações em todos os lugares para envolver uma matriz linear que finge ser circular.
a % b
pode ser expresso como a & (b - 1)
se b
fosse uma potência de dois. O AND bit a bit é massivamente mais rápido, portanto a capacidade do ArrayDeque é restrita a poder de dois. Todas as% operações são executadas com máscara de bits em vez de% real na implementação.
É também por isso que o HashMap mais recente não usa tamanhos de tabelas de números primos, mas sim dois , novamente porque a operação% precisa ser executada com tanta frequência e pouco a pouco e é muito mais rápida.
Portanto, se a linha de base for 10, as estruturas com potência de duas limitações devem usar 16, pois é a menor potência de duas que é pelo menos 10.