बस जानना चाहता था। java.util.Properties
बनाम java.util.HashMap<String, String>
के बीच अंतर क्या हैं? कौन सा बेहतर है?java.util.Properties बनाम java.util.Map <स्ट्रिंग, स्ट्रिंग>
उत्तर
वे समान हैं, लेकिन एक डिजाइन दृष्टिकोण से, Properties
वर्ग क्योंकि यह एक Hashtable
है (बजाय एक Hashtable का उपयोग), जावा के "गलतियों" में से एक माना जाता है। यह एक इंटरफ़ेस होना चाहिए था।
हमेशा जहां संभव सार का उपयोग करें, तो यह पसंद किया जाता है:
Map<String, String> stuff = new HashMap<String, String>();
Properties
का उपयोग कर से बचना चाहिए जब तक आप किया है।
भविष्यवाणियां हैशटेबल को बढ़ाती हैं, जो डिफ़ॉल्ट रूप से सिंक्रनाइज़ होती है। हैश मैप डिफ़ॉल्ट रूप से सिंक्रनाइज़ नहीं है। आप थोड़ा प्रदर्शन सुधार के लिए अंतर्निहित थ्रेड सुरक्षा का व्यापार कर रहे हैं, जिसे आप मापने में असमर्थ होने की संभावना रखते हैं।
गुण जावा 1.0 से पुरानी कक्षा है। हैश मैप जोशुआ ब्लोच के नए संग्रह एपीआई का हिस्सा है।
java.util.Properties
एक Hashtable<Object,Object>
इसलिए आप इसके बारे में java.util.HashMap<String, String>
गुण एक तुल्यकालन फार्म के रूप में देख सकते हैं संभाल करने के लिए ... गुण अच्छा है:) आप अन्य प्रयोजनों के लिए उपयोग करते हैं, फिर अपनी पसंद संगामिति पर निर्भर करेगा आपके प्रोग्राम में प्रबंधन
आपके पास थ्रेड सुरक्षा के लिए आधुनिक दिन ConcurrentHashMap<String, String>
है। वास्तव में Properties
का उपयोग न करें जब तक कि आप इसे .properties
फ़ाइल पढ़ने के लिए उपयोग नहीं कर रहे हैं।
गुण वर्ग Hashtable का एक विस्तार है, मूल रूप से कार्यक्षमता जोड़ने लिखने के लिए + (इस तरह पाठ मान जोड़े) एक सेट प्रारूप में एक डिस्क से पढ़ें: आप डिस्क पर संग्रहीत करने के लिए चाहते हैं
key1=value1
key2=value2
और उस प्रारूप का उपयोग करें, फिर गुणों का उपयोग करें, अन्यथा हैश मैप या हैशटेबल का उपयोग करें।
इन दो उपयोगिता वर्ग के विभिन्न उद्देश्य हैं। मानचित्र, या आपके मामले में, हैश मैप सामान्य उद्देश्य भंडारण ऑब्जेक्ट है जहां आपके पास अद्वितीय कुंजी है, और वे मान जिन्हें वे इंगित करते हैं। हैश मैप में कोई ऑब्जेक्ट प्रकार उनके कुंजी और किसी ऑब्जेक्ट प्रकार के रूप में उनके मान के रूप में हो सकता है।
java.util.Properties, हालांकि, एक विशेष उद्देश्य मानचित्र है। यह गुण फ़ाइलों को पढ़ने/लिखने के लिए विकसित किया गया है। ऐसा करने के लिए इसमें विशेष तरीके हैं [load(..)
देखें]। नक्शा नहीं है
तो, आपके पास उनका उपयोग करने के लिए अलग-अलग स्थितियां हैं। वे स्थान जहां आपको पढ़ने के लिए गुणों की आवश्यकता है, आप बेहतर गुणों के साथ जाते हैं। और ऐसे स्थान जहां आप लुकअप मानों को कुछ तर्क से संग्रहीत करना चाहते हैं, आप HashMap<String, String>
के साथ जाते हैं।
कोई कठोर और तेज़ नियम नहीं है, तो आप HashMap<String, String>
और Properties
का उपयोग कर सकते हैं। लेकिन एक इंजीनियर के रूप में, कार्य के लिए सही उपकरण का उपयोग करें।
- 1. java.util.Properties
- 2. स्ट्रिंग डिक्शनरी बनाम <स्ट्रिंग, स्ट्रिंग>
- 3. java.util.Properties मानचित्र <ऑब्जेक्ट, ऑब्जेक्ट> और मानचित्र क्यों नहीं लागू करता है <स्ट्रिंग, स्ट्रिंग>
- 4. java.util.Map पैरामीटर
- 5. आईडीआईआर <स्ट्रिंग, स्ट्रिंग> बनाम शब्दकोश <स्ट्रिंग, स्ट्रिंग>
- 6. स्ट्रिंग [] बनाम सूची <string> सी #
- 7. हाइबरनेट के साथ java.util.Properties persist?
- 8. JAXB java.util.Map बाध्यकारी
- 9. ईजेएस: <% = बनाम <% -
- 10. स्ट्रिंग बनाम स्ट्रिंग
- 11. स्ट्रिंग बनाम स्ट्रिंग
- 12. <%# %> बनाम <%= %>
- 13. पीएचपी: <<< ob_start बनाम
- 14. java.util.Map [स्ट्रिंग, ऑब्जेक्ट] को scala.collection.immutable.Map में कनवर्ट करें [स्ट्रिंग, कोई भी]
- 15. दो java.util.Properties ऑब्जेक्ट्स को मर्ज कैसे करें?
- 16. मैश <स्ट्रिंग, स्ट्रिंग>
- 17. <iostream> बनाम <iostream.h> बनाम "iostream.h"
- 18. string.IsNullOrEmpty (स्ट्रिंग) बनाम स्ट्रिंग। IsNullOrWhiteSpace (स्ट्रिंग)
- 19. स्ट्रिंग। फोर्मैट बनाम "स्ट्रिंग" + "स्ट्रिंग" या स्ट्रिंगबिल्डर?
- 20. "<>" बनाम "नहीं"
- 21. <applet> बनाम <object>
- 22. <?> बनाम <T>
- 23. <cstdint> बनाम <stdint.h>
- 24. एएसपी.नेट <%= %> बनाम <%: %>
- 25. रेल ERB <%- ... -%> बनाम <% ... %>
- 26. लिंक एक आईनेमरेबल <शब्दकोश <स्ट्रिंग, स्ट्रिंग >>
- 27. बनाम खंड बनाम <= AND > =
- 28. हाइबरनेट क्वेरी से java.util.Map कैसे प्राप्त करें?
- 29. java.util.Map और java.util.Set के अनुकूलित कार्यान्वयन?
- 30. java.util.Map के लिए जेनेरिक टेस्ट दोहन?
डुप http://stackoverflow.com/questions/40471/differences-between-hashmap-and-hashtable – Jivings