2012-02-27 16 views

उत्तर

11

वे समान हैं, लेकिन एक डिजाइन दृष्टिकोण से, Properties वर्ग क्योंकि यह एक Hashtable है (बजाय एक Hashtable का उपयोग), जावा के "गलतियों" में से एक माना जाता है। यह एक इंटरफ़ेस होना चाहिए था।

हमेशा जहां संभव सार का उपयोग करें, तो यह पसंद किया जाता है:

Map<String, String> stuff = new HashMap<String, String>(); 

Properties का उपयोग कर से बचना चाहिए जब तक आप किया है।

+3

आपका मतलब हैशटेबल?:) (असंगत वर्तनी भी जावा गलतियों का एक उदाहरण है) – Lukasz

+0

एलओएल - मैंने कभी नहीं देखा :) – Bohemian

2

भविष्यवाणियां हैशटेबल को बढ़ाती हैं, जो डिफ़ॉल्ट रूप से सिंक्रनाइज़ होती है। हैश मैप डिफ़ॉल्ट रूप से सिंक्रनाइज़ नहीं है। आप थोड़ा प्रदर्शन सुधार के लिए अंतर्निहित थ्रेड सुरक्षा का व्यापार कर रहे हैं, जिसे आप मापने में असमर्थ होने की संभावना रखते हैं।

गुण जावा 1.0 से पुरानी कक्षा है। हैश मैप जोशुआ ब्लोच के नए संग्रह एपीआई का हिस्सा है।

0

java.util.Properties एक Hashtable<Object,Object> इसलिए आप इसके बारे में java.util.HashMap<String, String>

गुण एक तुल्यकालन फार्म के रूप में देख सकते हैं संभाल करने के लिए ... गुण अच्छा है:) आप अन्य प्रयोजनों के लिए उपयोग करते हैं, फिर अपनी पसंद संगामिति पर निर्भर करेगा आपके प्रोग्राम में प्रबंधन

2

आपके पास थ्रेड सुरक्षा के लिए आधुनिक दिन ConcurrentHashMap<String, String> है। वास्तव में Properties का उपयोग न करें जब तक कि आप इसे .properties फ़ाइल पढ़ने के लिए उपयोग नहीं कर रहे हैं।

1

गुण वर्ग Hashtable का एक विस्तार है, मूल रूप से कार्यक्षमता जोड़ने लिखने के लिए + (इस तरह पाठ मान जोड़े) एक सेट प्रारूप में एक डिस्क से पढ़ें: आप डिस्क पर संग्रहीत करने के लिए चाहते हैं

key1=value1 
key2=value2 

और उस प्रारूप का उपयोग करें, फिर गुणों का उपयोग करें, अन्यथा हैश मैप या हैशटेबल का उपयोग करें।

16

इन दो उपयोगिता वर्ग के विभिन्न उद्देश्य हैं। मानचित्र, या आपके मामले में, हैश मैप सामान्य उद्देश्य भंडारण ऑब्जेक्ट है जहां आपके पास अद्वितीय कुंजी है, और वे मान जिन्हें वे इंगित करते हैं। हैश मैप में कोई ऑब्जेक्ट प्रकार उनके कुंजी और किसी ऑब्जेक्ट प्रकार के रूप में उनके मान के रूप में हो सकता है।

java.util.Properties, हालांकि, एक विशेष उद्देश्य मानचित्र है। यह गुण फ़ाइलों को पढ़ने/लिखने के लिए विकसित किया गया है। ऐसा करने के लिए इसमें विशेष तरीके हैं [load(..) देखें]। नक्शा नहीं है

तो, आपके पास उनका उपयोग करने के लिए अलग-अलग स्थितियां हैं। वे स्थान जहां आपको पढ़ने के लिए गुणों की आवश्यकता है, आप बेहतर गुणों के साथ जाते हैं। और ऐसे स्थान जहां आप लुकअप मानों को कुछ तर्क से संग्रहीत करना चाहते हैं, आप HashMap<String, String> के साथ जाते हैं।

कोई कठोर और तेज़ नियम नहीं है, तो आप HashMap<String, String> और Properties का उपयोग कर सकते हैं। लेकिन एक इंजीनियर के रूप में, कार्य के लिए सही उपकरण का उपयोग करें।

संबंधित मुद्दे