2010-09-28 11 views
19

मुझे Google संग्रह ImmutableMap और LinkedHashMap — परिभाषित पुनरावृत्ति आदेश के साथ अपरिवर्तनीय मानचित्र के संयोजन की आवश्यकता है। ऐसा लगता है कि ImmutableMap ही वास्तव में यात्रा के क्रम में कम से कम its documentation says परिभाषित किया गया है: विश्वसनीय उपयोगकर्ता द्वारा निर्दिष्ट यात्रा आदेश के साथGoogle संग्रह ImmutableMap पुनरावृत्ति आदेश

एक अपरिवर्तनीय, हैश आधारित मानचित्र।

हालांकि कोई और विवरण नहीं है। त्वरित परीक्षण से पता चलता है कि यह सच हो सकता है, लेकिन मैं यह सुनिश्चित करना चाहता हूं। दुर्भाग्यवश स्रोतों में त्वरित रूप से मुझे बहुत मदद नहीं मिली।

मेरा प्रश्न है: क्या मैं ImmutableMap के पुनरावृत्ति आदेश पर भरोसा कर सकता हूं? यदि मैं ImmutableMap.copyOf(linkedHashMap) करता हूं, तो क्या इसके मूल पुन: हैश मानचित्र के समान पुनरावृत्ति आदेश होगा? निर्माता द्वारा निर्मित अपरिवर्तनीय मानचित्रों के बारे में क्या? आधिकारिक उत्तर के लिए कुछ लिंक मदद करेंगे, क्योंकि Google को कुछ भी उपयोगी नहीं मिला। (और नहीं, स्रोतों के लिंक गिनती नहीं है)।

+0

मेरा मानना ​​है कि संग्रह अब गुवा पुस्तकालय में तब्दील हो गए हैं। लेकिन ImmutableMap के लिए प्रलेखन वही है। – Thilo

उत्तर

17

अधिक सटीक होने के लिए, इम्यूटेबल मैप फैक्ट्री विधियों और बिल्डर रिटर्न उदाहरण जो प्रदान किए गए इनपुट के पुनरावृत्ति क्रम का पालन करते हैं निर्माण में नक्शा। हालांकि, एक ImmutableSortedMap, जो ImmutableMap का उप-वर्ग है। चाबियाँ टाइप करता है।

4

आपको जवाडोक पर विश्वास करना चाहिए। यदि यह पर्याप्त नहीं है, तो स्रोत कोड पढ़ें या बग की रिपोर्ट करें।

स्रोत कोड के लिए एक त्वरित दृश्य से पता चलता है कि नक्शा सरणी द्वारा समर्थित है और पुनरावृत्ति इम्यूटेबलसेट के माध्यम से किया जाएगा जिसे एक सरणी द्वारा भी समर्थित किया जाता है। तो मुझे लगता है कि दस्तावेज सही है और तत्वों का क्रम रखा जाएगा जैसा कि यह है।

19

मैं वास्तव में answers from library authors साथ, इस बारे में चर्चा मिल गया है:

केविन Bourrillion: क्या हम द्वारा "उपयोगकर्ता द्वारा निर्दिष्ट" है मतलब है "यह किया जो कुछ भी आपको यह हो चाहते हैं कर सकते हैं"; दूसरे शब्दों में, आप जो भी आदेश में हमें प्रविष्टियां प्रदान करते हैं, वह ऑर्डर है जिसका हम उपयोग करते हैं।

जेरेड लेवी: आप एक वृक्ष मैप या लिंक्ड हैशैप की प्रतिलिपि भी बना सकते हैं जिसमें वांछित क्रम है।

हां, मुझे जवाडोक पर विश्वास करना चाहिए था, हालांकि मुझे लगता है कि इस मामले में जावाडोक बेहतर हो सकता है। ऐसा लगता है कि मैं पहले नहीं हूं जो इससे उलझन में था। यदि कुछ और नहीं है, तो यह क्यू/ए अगली बार Google को "इमटेबल मैप इयरेशन" की खोज करेगा :-)

+3

+1 मैं आपसे सहमत हूं कि जावाडॉक अधिक स्पष्ट हो सकता है। शायद "भरोसेमंद उपयोगकर्ता द्वारा निर्दिष्ट पुनरावृत्ति आदेश" के लिए कोई अन्य व्याख्या नहीं है, लेकिन copyOf() विधि पर थोड़ी अनावश्यक टिप्पणी है कि यह स्रोत मानचित्र के पुनरावृत्ति आदेश को चोट नहीं पहुंचाएगी। विधियों के परिवार के इस प्रकार की टिप्पणी होती है ("दिए गए प्रविष्टियों वाले एक अपरिवर्तनीय मानचित्र को क्रम में देता है।") – Thilo

+0

@ थिलो: आह, मैंने इन टिप्पणियों() विधियों के लिए नहीं देखा है। धन्यवाद। –

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