2010-06-04 10 views

उत्तर

13

की तरह एक "सामान्य" मानचित्र कार्यान्वयन एक नक्शा कोड में सामान्य कुंजी-मान पेयर उपयोग के लिए है के साथ रहने की जरूरत नहीं है, तो। गुणों को आमतौर पर फ़ाइल से कॉन्फ़िगरेशन मानों को संग्रहीत करने और लोड करने के लिए उपयोग किया जाता है। गुणों का अंतर्निहित कार्यान्वयन एक मानचित्र का उपयोग करता है।

गुणों का उपयोग कैसे करें और कब उपयोग करें पर त्वरित ट्यूटोरियल के लिए नीचे दिए गए लिंक को देखें।

http://docs.oracle.com/javase/tutorial/essential/environment/properties.html

1

प्रॉपर्टी क्लास मानचित्र-इंटरफ़ेस लागू करता है। प्रॉपर्टी क्लास में अपनी सामग्री को स्ट्रीम में सहेजने के तरीके हैं।

नज़र में: http://java.sun.com/j2se/1.3/docs/api/java/util/Properties.html

आप, सामग्री को बचाने HashMap

0

गुण मुख्य रूप से आधारित विन्यास डेटा और स्थानीयकरण के लिए इस्तेमाल किया, जबकि मानचित्र और अधिक सामान्य प्रयोजन है।

0

डॉक्स के अनुसार,

  • Map एक अंतरफलक
  • Properties है एक वर्ग को लागू करने वाली है कि इंटरफ़ेस
0

गुण IS-एक मानचित्र जो IS-एक Hashtable है। चाहे यह एक अलग सवाल हो या नहीं - मुझे लगता है कि इसे वास्तव में मानचित्र के माध्यम से मानचित्र प्राप्त करना चाहिए और मानचित्र इंटरफ़ेस को लागू नहीं करना चाहिए।

गुण श्रेणी गुण फ़ाइलों के लिए है - यही कारण है कि इसमें फ़ाइल को पढ़ने के लिए लोड विधियां हैं। इसलिए यदि आप गुण फ़ाइलों के साथ काम कर रहे हैं उदा।

propa = bob 
propb = jane 

फिर गुणों का उपयोग करें। अन्यथा आप अपना खुद का मानचित्र इंटरफ़ेस बनाना चाहते हैं और एक एप्राइपियेट कार्यान्वयन चुनना चाहते हैं उदा। हैश मैप

+3

प्रतिशोध: गुण आईएस-ए हैशटेबल जो आईएस-ए मानचित्र है। – BalusC

2

मानचित्र इंटरफ़ेस को कार्यान्वित करने वाली कक्षा का उपयोग करें, लेकिन गुण वर्ग नहीं है। गुण वर्ग टूटा हुआ है। चूंकि यह नीचे हैशटेबल है, ऐसे तरीके हैं जो अन्यथा लगातार स्ट्रिंग-टू-स्ट्रिंग मैपिंग को तोड़ देंगे। इसका आविष्कार बहुत आसानी से टूटा हुआ है (गलती से और उद्देश्य पर)। मानचित्र इंटरफ़ेस को लागू करने के लिए और कुछ भी उपयोग करें। यदि आप थ्रेड सुरक्षा के लिए लक्ष्य कर रहे हैं - एक बनाने के लिए Collections.synchronizedMap (myUnsyncdMap) का उपयोग करें।

आदर्श रूप से, अन्य उत्तरों में उल्लिखित 1 या दो विधियों के अलावा दो वर्गों के बीच कोई अंतर नहीं है। हालांकि गुण कार्यान्वयन वास्तव में विचित्र है - नक्शा इंटरफ़ेस से प्राप्त अन्य वर्ग, अधिक सुरक्षित हैं, बेहतर सांख्यिकीय टाइपिंग प्रदान करते हैं और संभवतः तेज़ होते हैं (आपको जो चाहिए वह निर्भर करता है)। कार्यान्वयन का शीघ्रता से अवलोकन ले रहा है (विशेष रूप से जो वर्ग यह से निकला है) यह से बचने के लिए :)

12

PropertiesMap<String,String> + कुछ आई/ओ तरीकों के लिए एक Facade है आप को समझाने के लिए पर्याप्त होना चाहिए।

क्या आपको I/O विधियों की आवश्यकता है? इसका इस्तेमाल करें: मत करो।

0

प्रति कुंजी डिफ़ॉल्ट सिस्टम की एक और विशेषता Hashtable में मौजूद नहीं है। उदा .:

Properties p0 = new Properties(); 
p0.setProperty("a", "0"); 
p0.setProperty("b", "1"); 
Properties p1 = new Properties(p0); 
p1.setProperty("a", "10"); 
assert p1.getProperty("a").equals("10"); 
assert p1.getProperty("b").equals("1"); 
assert p1.getProperty("c") == null; 

डिफ़ॉल्ट गुणों में डिफ़ॉल्ट रूप से खोजे जाते हैं।

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