2015-11-14 31 views
5

當我說順序時 - 我的意思是編譯器選擇顯示結果的順序,我知道字典沒有像數組那樣的索引。Swift - 什麼決定了Dictionary Collection的順序?

我有以下的解釋:

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

但是控制檯顯示它顯示是這樣的:

[ 「隱私」:( 「設置密碼」 ), 「加載標籤」 ( 「刷新選項卡中選擇選項卡時,」 ), 「數據」:( 保存, 恢復 ), 「關於我」:( Twitter的, LinkedIn )

正如你所看到的順序是不同的,但是當我改變字典代碼的順序輸出仍然是相同的。

所以有人可以澄清,對我來說,請讓我更好地理解這是如何實現的?我不是在操縱字典,而是試圖理解輸出是如何確定的。

如果鍵沒有設置順序,每次字典輸出時它是否應該不顯示爲隨機?

回答

8

Dictionary S於Hashable鍵操作和使用hash table,經常使用的方式來表示與O(1)查找關聯數組被實現。散列表通常按散列碼的整數值對少量鍵值對(低於存儲區閾值)進行排序,然後以反向插入順序進行排序。這意味着在大多數情況下,您不能依賴散列表以任何合理或可預測的順序進行排序。

相關問題