संक्षिप्त जवाब
क्योंकि ArrayDeque क्षमता दो की शक्ति होनी चाहिए, और 16 दो की सबसे छोटी शक्ति है जो कम से कम 10 है।
ArrayDeque को एक रैखिक सरणी के चारों ओर लपेटने के लिए हर जगह बहुत सारे% संचालन का उपयोग करने की आवश्यकता होती है जो परिपत्र होने का दिखावा करता है।
a % b
के रूप में व्यक्त किया जा सकता a & (b - 1)
है, तो b
दोनों में से एक शक्ति है। बिटवाइज़ और बड़े पैमाने पर तेज़ है इसलिए ArrayDeque की क्षमता दो की शक्ति तक सीमित है। कार्यान्वयन में वास्तविक% के बजाय सभी% संचालन बिटमास्किंग के साथ किए जाते हैं।
यही कारण है कि नए HashMap प्राइम नंबर टेबल आकारों का उपयोग नहीं करता है , लेकिन दो की शक्ति , फिर से क्योंकि% ऑपरेशन को इतनी बार और बिटवाइज़ प्रदर्शन करने की आवश्यकता होती है और यह बहुत तेज़ है।
इसलिए यदि आधार रेखा 10 है, तो दो सीमाओं की शक्ति वाली संरचनाओं को 16 उपयोग करना चाहिए यह दो की सबसे छोटी शक्ति है जो कम से कम 10 है।