2015-11-14 7 views
5

जब मैं ऑर्डर कहता हूं - मेरा मतलब है कि संकलक परिणाम प्रदर्शित करने का विकल्प चुनता है, मुझे पता है कि एक शब्दकोश में कोई सरणी नहीं है।स्विफ्ट - एक शब्दकोश संग्रह के आदेश को निर्धारित करता है?

मैं निम्नलिखित शब्दकोश है:

let groups :Dictionary<String,AnyObject> = [ 
"Data": ["Save", "Restore"], 
"Load Tabs": ["Reload Tabs when selecting tab"], 
"Privacy": ["Set Passcode"], 
"About Me": ["Twitter", "LinkedIn"]] 

लेकिन सांत्वना इसे इस तरह दिखाया गया है पता चलता है:

[ "गोपनीयता": ( "पासकोड सेट"), "लोड टैब" : ( "टैब का चयन करते समय टैब को दोबारा लोड करें" ), "डेटा": ( सहेजें, पुनर्स्थापित करें), "मेरे बारे में": ( ट्विटर, लिंक्डइन )]

आप देख सकते हैं अलग है, लेकिन जब मैं शब्दकोश कोड का क्रम बदलने के उत्पादन अभी भी एक ही है।

तो क्या कोई मेरे लिए यह स्पष्ट कर सकता है कि कृपया मेरे लिए यह समझें कि यह कैसे प्राप्त किया जाता है? मैं शब्दकोश में हेरफेर करने की कोशिश नहीं कर रहा हूं, लेकिन यह समझने की कोशिश कर रहा हूं कि आउटपुट कैसे निर्धारित किया जाता है।

यदि कुंजी के पास सेट ऑर्डर नहीं है, तो क्या प्रत्येक बार डिक्शनरी आउटपुट देता है तो यह यादृच्छिक दिखाई नहीं दे सकता है?

उत्तर

8

Dictionary रों Hashable कुंजी पर काम करते हैं और O(1) देखने के साथ साहचर्य सरणियों का प्रतिनिधित्व करने के लिए एक hash table, एक अक्सर इस्तेमाल जिस तरह से उपयोग से क्रियान्वित की। हैश टेबल्स आमतौर पर हैश कोड के पूर्णांक मान द्वारा क्रमशः कुंजी-मूल्य-जोड़ों (बाल्टी थ्रेसहोल्ड के नीचे) के लिए क्रमबद्ध होते हैं, और उसके बाद रिवर्स सम्मिलन क्रम में। इसका मतलब है कि आप ज्यादातर मामलों में किसी उचित या अनुमानित क्रम में हल किए जाने के लिए हैश टेबल पर भरोसा नहीं कर सकते हैं।

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