java - How to read and write a HashMap to a file? -


मेरे पास निम्न हैशमैप है:

  हैशमैप & lt; स्ट्रिंग , वस्तु & gt; FileObj = नया हैशमॉप & lt; स्ट्रिंग, ऑब्जेक्ट & gt; (); ArrayList & LT; स्ट्रिंग & gt; Cols = new ArrayList & lt; स्ट्रिंग & gt; (); cols.add ( "एक"); cols.add ( "ख"); cols.add ( "सी"); fileObj.put ( "MyList", कॉलम);  

मैं इसे किसी फ़ाइल में लिखता हूं:

  फ़ाइल फ़ाइल = नया फ़ाइल ("अस्थायी"); FileOutputStream f = नया FileOutputStream (फ़ाइल); ObjectOutputStream s = नया ऑब्जेक्टऑटपुटस्ट्रीम (एफ); s.writeObject (fileObj); s.flush ();  

अब मैं इस फ़ाइल को एक हैशमैप में वापस पढ़ना चाहता हूँ जहां ऑब्जेक्ट एक ArrayList है I अगर मैं बस करता हूं:

  फ़ाइल फ़ाइल = नया फ़ाइल ("अस्थायी"); FileInputStream f = नया FileInputStream (फ़ाइल); ObjectInputStream s = नया ObjectInputStream (f); FileObj = (हैशमैप & lt; स्ट्रिंग, ऑब्जेक्ट & gt;) s.readObject (); s.close ();  

यह मुझे उस स्वरूप में ऑब्जेक्ट नहीं देता है जिसे मैंने इसे सहेजा था। इसमें 15 नल तत्वों और & lt; मेरीलिस्ट, [ए, बी, सी]> 3 एमेंट पर जोड़ी मैं चाहता हूं कि यह केवल एक तत्व को उन मूल्यों के साथ वापस लौटाए जो मैंने इसे पहले स्थान पर प्रदान किया था।
// मैं उसी ऑब्जेक्ट को एक हैशमैप में कैसे वापस पढ़ सकता / सकती हूं?

ठीक है तो सीम के आधार पर ध्यान दें: यह सही स्पष्टीकरण लगता है:

ObjectOutputStream वस्तुओं को क्रमबद्ध करता है (इस मामले में हैशमैप) जो भी प्रारूप में ObjectInputStream deserialize को समझ जाएगा और किसी भी सीरियलजबल ऑब्जेक्ट के लिए ऐसा सामान्य रूप से करता है यदि आप इसे अपने स्वरूप में सीरियल करना चाहते हैं, तो आप अपनी खुद की सीरियललाइज़र / डिसेराइलाइजर लिखना चाहेंगे।

मेरे मामले में: मैं बस हैशमैप में उन सभी तत्वों के माध्यम से दोहराता हूं जब मैंने ऑब्जेक्ट को फ़ाइल से वापस पढ़ा और डेटा प्राप्त किया और इसके साथ जो भी करना चाहता हूं। (यह केवल बिंदु पर पाश में प्रवेश करती है जहां डेटा है)।

धन्यवाद,

आप हाशमैप के आंतरिक श्वसन तंत्र को समझते हैं कि कैसे हैशैप व्यवहार करता है संग्रह समान हैं यह आपको साबित करने के लिए एक सरल परीक्षण है।

  सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग ... आर्ग्स) IOException फेंकता है, ClassNotFoundException {HashMap & lt; स्ट्रिंग, ऑब्जेक्ट & gt; FileObj = नया हैशमॉप & lt; स्ट्रिंग, ऑब्जेक्ट & gt; (); ArrayList & LT; स्ट्रिंग & gt; Cols = new ArrayList & lt; स्ट्रिंग & gt; (); cols.add ( "एक"); cols.add ( "ख"); cols.add ( "सी"); FileObj.put ("mylist", cols); {फाइल फ़ाइल = नया फ़ाइल ("अस्थायी"); FileOutputStream f = नया FileOutputStream (फ़ाइल); ObjectOutputStream s = नया ऑब्जेक्टऑटपुटस्ट्रीम (एफ); s.writeObject (fileObj); s.close (); } फ़ाइल फ़ाइल = नया फ़ाइल ("अस्थायी"); FileInputStream f = नया FileInputStream (फ़ाइल); ObjectInputStream s = नया ObjectInputStream (f); हैशमैप & lt; स्ट्रिंग, ऑब्जेक्ट & gt; FileObj2 = (हैशमैप & lt; स्ट्रिंग, ऑब्जेक्ट & gt;) s.readObject (); s.close (); Assert.assertEquals (fileObj.hashCode (), fileObj2.hashCode ()); Assert.assertEquals (fileObj.toString (), fileObj2.toString ()); Assert.assertTrue (fileObj.equals (fileObj2)); }  

Comments

Popular posts from this blog

c# - sqlDecimal to decimal clr stored procedure Unable to cast object of type 'System.Data.SqlTypes.SqlDecimal' to type 'System.IConvertible' -

Calling GetGUIThreadInfo from Outlook VBA -

Obfuscating Python code? -