Câu trả lời ngắn
Bởi vì công suất ArrayDeque phải là lũy thừa của hai và 16 là công suất nhỏ nhất của hai ít nhất là 10.
ArrayDeque cần sử dụng rất nhiều hoạt động% ở khắp mọi nơi để bao quanh một mảng tuyến tính giả vờ là hình tròn.
a % b
có thể được thể hiện như a & (b - 1)
thể b
là một sức mạnh của hai. Bitwise AND nhanh hơn rất nhiều nên khả năng của ArrayDeque bị hạn chế là sức mạnh của hai. Tất cả các hoạt động% được thực hiện với bitmasking thay vì% thực tế trong quá trình thực hiện.
Đây cũng là lý do tại sao HashMap mới hơn không sử dụng kích thước bảng số nguyên tố, nhưng sức mạnh của hai , một lần nữa bởi vì hoạt động% cần phải được thực hiện thường xuyên và bitwise và nhanh hơn nhiều.
Vì vậy, nếu đường cơ sở là 10, thì các cấu trúc có sức mạnh ở hai giới hạn nên sử dụng 16 bởi vì đó là sức mạnh nhỏ nhất trong hai, ít nhất là 10.