java - What is the difference between google's ImmutableList and Collections.unmodifiableList ()? -


ImmutableList javadocs से:

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

इसका क्या मतलब है कि:

  1. यदि मेरे पास आयाम वस्तुओं (उदाहरण के लिए) की अछूत सूची है, तो मैं उसमें कोई आयाम ऑब्जेक्ट नहीं बदल सकता?
  2. और अगर मेरे पास संग्रह है। अनमोडिफायबल लिस्ट ( सूची) आयाम ऑब्जेक्ट्स का मैं केवल किसी ऑब्जेक्ट को जोड़ या हटा नहीं सकता, लेकिन मैं उन्हें बदल सकता हूँ (उदाहरण के लिए कॉल सेट डिमेंशन (चौड़ाई, ऊंचाई) विधि)?

< डिव वर्ग = "पोस्ट-टेक्स्ट" आइटमप्रॉप = "टेक्स्ट">

नहीं, अपरिवर्तनीयता केवल संग्रह में मौजूद ऑब्जेक्ट की मात्रा और संदर्भों पर लागू होती है, और संग्रह में आपके द्वारा रखी गई वस्तुओं की परिवर्तनशीलता को संबोधित नहीं करती है।

मानक जेडीके संग्रह पर अयोग्य सूची लाभ क्या है। अनमोडिफायबल लिस्ट यह है कि ImmutableList का उपयोग करके आपको गारंटी दी जाती है कि वस्तु संदर्भित की जाती है, उनका ऑर्डर और सूची का आकार नहीं हो सकता किसी भी स्रोत से अनजान Collection.unmodifiableList के साथ अगर कुछ अन्य अंतर्निहित सूची का कोई संदर्भ रखता है, तो यह कोड सूची को संशोधित कर सकता है, भले ही आपके पास एक अनमोडीएबल योग्य सूची का कोई संदर्भ हो।

यदि आप सही अचूकता चाहते हैं, तो आपके पास अपरिवर्तनीय वस्तुओं के साथ सूची को भरने के लिए।


Comments

Popular posts from this blog

.net - C# List<T>.Find(x=>x.Rectangle.Contains(Point)) FAIL -

iphone - Smoothing a rounded stroke in Core Graphics -

c++ - QtQuick: QQmlApplicationEngine failed to load component qrc:/main.qml:23 Invalid attached object assignment -