कक्षा पर size()
विधि के लिए कोई उपयोग केस है?बिटसेट के आकार() विधि का कारण क्या है?
मेरा मतलब है - जावाडोक स्पष्ट रूप से कहता है कि यह कार्यान्वयन निर्भर है, यह बिट्स में आंतरिक long[]
संग्रहण का आकार देता है। यह क्या कहते हैं से, यह निष्कर्ष निकाल सकता है कि आप size()
तुलना में एक उच्च सूचकांक के साथ एक सा सेट करने के लिए सक्षम नहीं होगा, लेकिन यह सच नहीं है, BitSet
स्वचालित रूप से बढ़ सकता है:
BitSet myBitSet = new BitSet();
System.out.println(myBitSet.size()); // prints "64"
myBitSet.set(768);
System.out.println(myBitSet.size()); // prints "832"
BitSet
साथ हर एक मुठभेड़ में मैंने अपने जीवन में पड़ा है, मैं हमेशा के बाद से है कि एक BitSet
की तार्किक आकार देता है length()
उपयोग करना चाहता था:
BitSet myBitSet = new BitSet();
System.out.println(myBitSet.length()); // prints "0"
myBitSet.set(768);
System.out.println(myBitSet.length()); // prints "769"
यहां तक कि मैं पिछले 6 वर्षों के लिए जावा प्रोग्रामिंग कर दिया है, हालांकि, दो तरीकों हमेशा अत्यधिक हैं मेरे लिए भ्रमित मैं अक्सर उन्हें मिलाकर गलत तरीके से उपयोग करता हूं, क्योंकि मेरे सिर में, मुझे BitSet
एक चालाक Set<boolean>
के रूप में लगता है जहां मैं size()
का उपयोग करता हूं।
ऐसा लगता है कि ArrayList
length()
तत्वों की संख्या और size()
अंतर्निहित सरणी के आकार को वापस कर रहा था।
अब, क्या size()
विधि के लिए कोई उपयोग केस है जो मुझे याद आ रही है? क्या यह किसी भी तरह से उपयोगी है? क्या किसी ने कभी भी इसका इस्तेमाल किया है? क्या यह कुछ मैन्युअल बिट twiddling या कुछ समान के लिए महत्वपूर्ण हो सकता है?
संपादित (कुछ और अधिक शोध के बाद)
मुझे एहसास हुआ BitSet
जावा 1.0 में पेश किया गया था, जबकि कक्षाएं उपयोग हम में से ज्यादातर के साथ संग्रह ढांचे जावा 1.2 में पेश किया गया था। तो मूल रूप से मुझे लगता है कि size()
विरासत कारणों से रखा गया है और इसके लिए कोई वास्तविक उपयोग नहीं है। नए संग्रह वर्गों में ऐसी विधियां नहीं हैं, जबकि कुछ पुराने (Vector
, उदाहरण के लिए) करते हैं।
ऐसा लगता है कि मैं सभी के बाद सही रास्ते पर था। अगर कोई विधि के लिए क्रांतिकारी उपयोग के साथ आता है तो मैं थोड़ा और इंतजार करूंगा, लेकिन मुझे लगता है कि टिक तुम्हारा होगा। यह एक शर्म की बात है कि उन्होंने इसे बर्बाद नहीं किया। यह गलत इस्तेमाल करते समय मुझे अनमोल समय बचाएगा। –