ArrayList's spec पर देख रहे हैं मुझे कोई जानकारी नहीं है जो यह जानकारी प्रदान करता है।
जिसके अनुसार, ensureCapacity विधि सही दिशा में एक कदम की तरह प्रतीत होता है (सावधानी: यह है एक सही जवाब की गारंटी नहीं है): जब कहा जाता है कि यह सुनिश्चित करता है कि क्षमता कम से कम निर्दिष्ट तर्क है। इसलिए, यदि ArrayList
कार्यान्वयन क्षमता सुनिश्चित करने के लिए इस विधि का उपयोग करता है (जैसा कि कुछ निजी विधि को कॉल करने के विपरीत है/प्रासंगिक क्षेत्रों को सीधे जोड़ना) आप इस विधि को ओवरराइड करके वर्तमान क्षमता प्राप्त कर सकते हैं। आपको उसी तरह trimToSize()
ओवरराइड करने की भी आवश्यकता है।
बेशक, यह समाधान ArrayList
(किसी अन्य विक्रेता से JVM पर) के विभिन्न कार्यान्वयन के रूप में बहुत पोर्टेबल नहीं है, चीजें अलग-अलग कर सकती हैं।
यहाँ कोड की तरह
public class CapacityTrackingArrayList<T> extends ArrayList<T> {
// declare a constructor for each ArrayList constructor ...
// Now, capacity tracking stuff:
private int currentCapacity = 10;
public int getCapacity() { return currentCapacity; }
public void ensureCapacity(int arg) {
currentCapacity = arg;
super.ensureCapacity(arg);
}
public void trimToSize() { currentCapacity = size(); super.trimToSize(); }
}
स्रोत
2010-03-23 02:06:27
आप इस जानकारी की आवश्यकता क्यों करते हैं? –
छाल .. कुछ भी विशिष्ट नहीं .. मेरे पास एक साक्षात्कार में – JavaUser
Google ने मुझे यहां ले जाया था। कारण मुझे इस जानकारी की आवश्यकता है - मेरे पास एक ArrayBlockingQueue है जिसे मैं किसी अन्य संग्रह में परिणाम, प्रसंस्करण और परिणामों को संग्रहीत कर रहा हूं। सोचा कि परिणाम संग्रह के लिए प्रारंभिक क्षमता का उपयोग करना अच्छा होगा जो एबीक्यू की क्षमता से मेल खाता है। इतना अजीब उपयोग मामला नहीं, नहीं? मेरे आस-पास के अन्य तरीके भी हैं (उदाहरण के लिए एक स्थिर फाइनल के रूप में क्षमता भंडारण करना और संदर्भ देना), लेकिन सभी मामलों में जरूरी नहीं है। – ericsoco