वहाँ Map.of()
और Collections.emptyMap()
के बीच एक अंतर, List.of()
और Collections.emptyList()
और Set.of()
और Collections.emptySet()
के बीच के बीच है?Map.of() बनाम Collections.emptyMap()
उत्तर
हाँ, वहाँ भी व्यवहार और नहीं संग्रह Collections
कक्षा में emptyXyz
कारखाने तरीकों से लौट आए और नई of
कारखाने तरीकों JDK 9 के साथ इंटरफेस (Map
, List
, Set
) में शुरू के बीच सिर्फ तकनीकी मतभेद , अगर इन्हें कोई तर्क नहीं दिया जाता है।
प्रासंगिक अंतर यह है कि संग्रह नई of
कारखाने तरीकों से लौटे null
कुंजी और मूल्यों की अनुमति नहीं देने (के रूप में List, Set और Map इंटरफेस में API दस्तावेज़ों में बताया) है। यह खाली संग्रह के लिए असहज लग सकता है, लेकिन अगर यह स्पष्ट रूप से दस्तावेज नहीं है, तो नए संग्रह कार्यान्वयन में एक्सेसर विधियां भी शून्य मानों की जांच करती हैं।
मतभेद के कुछ उदाहरण:
Collections.emptyList().contains(null)
, अवास्तविक लौटाते हैं, जबकि List.of().contains(null)
एक NullPointerException
फेंक देते हैं।
Collection.emptyMap().getOrDefault(null, V)
V
लौटाएगा, जबकि Map.of().getOrDefault(null, V)
NullPointerException
फेंक देगा।
के रूप में वर्तमान में Oracle की JDK 9 में लागू, कम से कम नए कारखाने तरीकों से लौटे (NullPointerException
रों फेंक देंगे, लेकिन 'sanely' व्यवहार करते हैं कि कैसे संग्रह कक्षाएं मूल रूप से डिजाइन किए गए थे के रूप में और संग्रह पर निम्न विधियों में समर्थन करने के लिए निर्दिष्ट अशक्त कुंजी और मूल्यों) Collections
कक्षा में वर्ष कारखाने तरीकों का उपयोग कर:
List.of().contains(null);
Set.of().contains(null);
Map.of().containsKey(null);
Map.of().containsValue(null);
Map.of().getOrDefault(null, <any>);
+1 यह अच्छा है। हो सकता है, जब आप "एपीआई दस्तावेज में बताए गए अनुसार" पर ध्यान आकर्षित करते हैं, तो सभी संग्रह प्रकारों में सेक्शन निर्दिष्ट करें: * "अपरिवर्तनीय
इसके अलावा "सैनीली" बहस योग्य है - एनपीई तर्कसंगत रूप से अधिक सचेत है, लेकिन पीछे-संगत नहीं है। – slim
@ स्लिम यहां पिछड़े संगतता के साथ कोई समस्या नहीं है। 'X.of()' विधियां नई हैं, और 'Collections.emptyX()' विधियों की प्रत्यक्ष प्रतिस्थापन के रूप में नहीं हैं। मौजूदा कोड पुराने जावा संस्करणों में काम करना जारी रखेगा। – Jesper
- 1. mongoose save vs बनाम बनाम बनाम बनाम
- 2. बनाम बनाम
- 3. : बनाम बनाम ::
- 4. * बनाम ** बनाम ***?
- 5. स्पाइडरमोन्की बनाम जावास्क्रिप्ट बनाम बनाम?
- 6. Mercurial: भ्रष्टाचार बनाम रिकॉर्ड बनाम qrecord बनाम शेल्व बनाम प्रत्यारोपण बनाम dirstate बनाम कतार
- 7. LINQ बनाम लैम्ब्डा बनाम अज्ञात तरीके बनाम बनाम
- 8. एनएचबीर्नेट एचक्यूएल बनाम मानदंड बनाम क्वेरीरी बनाम लिंक बनाम। प्रदर्शन
- 9. एलजी 4 बनाम lz4_hc बनाम ब्लॉस्क बनाम स्नैपी बनाम फास्टलज़
- 10. MySQL मौजूदा बनाम बनाम subquery बनाम subquery बनाम?
- 11. डीकोड और व्याख्या को बनाम बनाम बनाम बनाम
- 12. इनलाइन बनाम __inline बनाम __inline__ बनाम __forceinline बनाम?
- 13. सीमा बनाम बनाम बनाम गिनती (*) बनाम गिनती (आईडी) MySQL
- 14. एपीआई बनाम टूलकिट बनाम फ्रेमवर्क बनाम लाइब्रेरी
- 15. pymssql बनाम pyodbc बनाम adodbapi बनाम ...
- 16. एटमिकोस बनाम जेओटीएम बनाम बिट्रोनिक्स बनाम?
- 17. न्यूट बनाम एमबीयूनीट बनाम एमएसटीएस्ट बनाम xUnit.net
- 18. विधि बनाम फंक्शन बनाम प्रक्रिया बनाम कक्षा?
- 19. .NET बनाम एएसपी.नेट बनाम सीएलआर बनाम एएसपी
- 20. 'विधि' बनाम 'संदेश' बनाम 'फ़ंक्शन' बनाम '???'
- 21. अक्ष 2 बनाम वसंत-बनाम बनाम जर्सी
- 22. एसीई बनाम बूस्ट बनाम पोको बनाम WxWidgets
- 23. control.BeginInvoke() बनाम डिस्पैचर बनाम SynchronizationContext बनाम .. - विश्वसनीयता
- 24. _Expand बनाम बनाम जीएनयू
- 25. एफ़टीपी कमांड्स बनाम बनाम
- 26. ड्रॉप ... बनाम बनाम
- 27. रेल बनाम बनाम
- 28. गिट में बनाम बनाम
- 29. फ़ाइल बनाम ब्लॉक बनाम
- 30. इकाई फ्रेमवर्क बनाम बनाम
अंतर किस तरह आप के लिए देख रहे हैं? विधि नाम भिन्न हैं, लेकिन परिणामस्वरूप डेटा संरचनाएं बहुत समान व्यवहार करती हैं। –
@ सी-ओटो यदि आप दावा करते हैं कि विधियां केवल 'बेहद समान' हैं (और समान नहीं हैं), तो आपको स्पष्ट रूप से सोचना चाहिए कि इसमें कोई अंतर है। – jarnbjo
@jarnbjo मतभेद हैं - मेरा उत्तर देखें – xenteros