java - UnmodifiableMap(जावा संग्रह) बनाम ImmutableMap(Google)




collections guava (3)

इस प्रश्न का उत्तर यहां दिया गया है:

प्रसंग

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

सवाल

मैंने UnmodifiableMap और ImmutableMap ऑनलाइन के बहुत सारे संदर्भ देखे हैं, लेकिन मुझे उनकी तुलना / विपरीत कुछ भी दिखाई नहीं देता है। मुझे लगता है कि एक अच्छा कारण है कि Google / Guava ने अपना स्वयं का संस्करण बनाया - क्या कोई मुझे बता सकता है कि यह क्या है?


ImmutableMap null मान स्वीकार नहीं करता है जबकि Collections.unmodifiableMap() करता है। इसके अलावा यह निर्माण के बाद कभी नहीं बदलेगा, जबकि UnmodifiableMap हो सकता है। जावाडॉक से:

विश्वसनीय उपयोगकर्ता-निर्दिष्ट पुनरावृत्ति आदेश के साथ एक अपरिवर्तनीय, हैश-आधारित मानचित्र। शून्य कुंजी या मानों की अनुमति नहीं है।

Collections.unmodifiableMap (java.util.Map) के विपरीत, जो एक अलग मानचित्र का दृश्य है जो अभी भी बदल सकता है, इम्यूटेबल मैप का एक उदाहरण अपना डेटा है और कभी नहीं बदलेगा। ImmutableMap सार्वजनिक स्थैतिक अंतिम मानचित्र ("निरंतर मानचित्र") के लिए सुविधाजनक है और आपको कॉलर द्वारा अपनी कक्षा में प्रदान किए गए मानचित्र की आसानी से "रक्षात्मक प्रति" बनाने देता है।


ImmutableMap JavaDoc पर एक नज़र डालें: doc

इसके बारे में जानकारी है:

Collections.unmodifiableMap (java.util.Map) के विपरीत, जो एक अलग मानचित्र का दृश्य है जो अभी भी बदल सकता है, इम्यूटेबल मैप का एक उदाहरण अपना डेटा है और कभी नहीं बदलेगा। ImmutableMap सार्वजनिक स्थैतिक अंतिम मानचित्र ("निरंतर मानचित्र") के लिए सुविधाजनक है और आपको कॉलर द्वारा अपनी कक्षा में प्रदान किए गए मानचित्र की आसानी से "रक्षात्मक प्रति" बनाने देता है।


अमरूद दस्तावेज़ीकरण

जेडीके Collections.unmodifiableXXX .unmodifiableXXX विधियों प्रदान करता है, लेकिन हमारी राय में, यह अनावश्यक और verbose हो सकता है; हर जगह उपयोग करने के लिए अप्रिय आप रक्षात्मक प्रतियां असुरक्षित बनाना चाहते हैं: लौटे हुए संग्रह केवल वास्तव में अपरिवर्तनीय हैं यदि कोई भी मूल संग्रह अक्षम का संदर्भ नहीं रखता है: डेटा संरचनाओं में अभी भी परिवर्तनीय संशोधन जांच, अतिरिक्त स्थान सहित म्यूटेबल संग्रह के सभी ओवरहेड हैं हैश टेबल, आदि





guava