आप दोनों समान परिणामों के साथ उपयोग कर सकते हैं।
एक पूर्व उत्तर नोट्स कि clear
परिपक्व मानचित्र कार्यान्वयन में निरंतर समय लेने की उम्मीद है। HashMap
, TreeMap
, ConcurrentHashMap
की पसंद के स्रोत कोड की जांच किए बिना, मैं अपने clear
विधि को लगातार समय लेने के लिए, amortized कचरा संग्रहण लागत की अपेक्षा करता हूं।
एक और पोस्टर नोट करता है कि एक साझा मानचित्र को हटाया नहीं जा सकता है। खैर, अगर आप इसे चाहते हैं, तो आप इसे proxy ऑब्जेक्ट का उपयोग कर कर सकते हैं जो उचित मानचित्र को समाहित करता है और आवश्यकता होने पर इसे बाहर निकाल देता है। बेशक, आपको प्रॉक्सी मैप क्लास को स्वयं लागू करना होगा।
Map<Foo, Bar> myMap = new ProxyMap<Foo, Bar>();
// Internally, the above object holds a reference to a proper map,
// for example, a hash map. Furthermore, this delegates all calls
// to the underlying map. A true proxy.
myMap.clear();
// The clear method simply reinitializes the underlying map.
जब तक आप ऊपर, clear
और nulling की तरह कुछ बाहर तरीके कि बात में बराबर हैं, लेकिन मुझे लगता है कि यह अपने नक्शे ग्रहण करने के लिए, भले ही वर्तमान में साझा नहीं किया और अधिक परिपक्व है, एक बाद में साझा हो सकता है किया बलों के कारण समय आप भविष्यवाणी नहीं कर सकते हैं।
नक्शा साझा नहीं होने के बावजूद clear
को बाहर निकालने के बजाय एक और कारण है। आपके मानचित्र को बाहरी क्लाइंट द्वारा factory की तरह तुरंत चालू किया जा सकता है, इसलिए यदि आप अपना नक्शा साफ़ करके इसे साफ़ कर देते हैं, तो आप coupling को कारखाने में अनावश्यक रूप से समाप्त कर सकते हैं। मानचित्र को साफ़ करने वाली ऑब्जेक्ट को यह क्यों पता होना चाहिए कि आप अपने मानचित्रों को गुवा के Maps.newHashMap()
का उपयोग करके तत्काल मानते हैं कि भगवान क्या पैरामीटर जानते हैं? भले ही यह आपकी परियोजना में यथार्थवादी चिंता न हो, फिर भी यह परिपक्व प्रथाओं के लिए स्वयं को संरेखित करने के लिए भुगतान करता है।
उपर्युक्त कारणों से, और अन्य सभी बराबर होने के कारण, मैं clear
के लिए वोट दूंगा।
एचटीएच।
"उदाहरण के लिए, यदि आप कोई नक्शा बनाते हैं, तो इसे कई ऑब्जेक्ट्स दें ..." क्या आपका सामान्य मानचित्र (मानचित्र <ऑब्जेक्ट, ऑब्जेक्ट>) के लिए है? – Woody
@Woody मेरा मतलब है 'मानचित्र' इंटरफ़ेस - 'हैश मैप ' या 'ट्रीएप ' लागू करने वाला एक वर्ग बनाना। –
dasblinkenlight
@Woody - मुझे नहीं लगता कि यह क्यों मायने रखता है। उनका मतलब है कि यदि ऐसी कई वस्तुएं हैं जिनके पास मूल मानचित्र का संदर्भ है, तो आपको शायद मानचित्र को खाली करने के चरण में 'स्पष्ट() 'का उपयोग करने की आवश्यकता होगी (मानचित्र पर एक संदर्भ को शून्य पर सभी का कोई प्रभाव नहीं होगा एक ही मानचित्र के अन्य संदर्भ)। – jahroy