2015-11-14 12 views
5

私が注文を言うとき - 私は、コンパイラが結果を表示することを選択した順序を意味し、私は辞書がない配列のような索引を持たないことを知っています。Swift - 辞書コレクションの順序を決めるのは何ですか?

I次の辞書があります。

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

をしかし、コンソールが、それはこのように表示を示しています。

[ "プライバシー":( "パスコードを設定する")、 "ロードタブ" 「 」「 」タブを選択したときのリロードタブ、「データ」:( 保存、 リストア )「About Me」:( Twitter、 LinkedInの )]あなたが順序を見ることができるように

は異なりますが、私は辞書コードの順序を変更する場合、出力は同じです。

だから、誰かが私のためにそれはので、私はこれが達成され、より良い方法を理解してください明確だろうか?私は辞書を操作しようとはしていませんが、出力がどのように決定されているかを理解しようとしています。

キーが設定された順序を持っていない場合、それは辞書は出力を与えるたびにランダムに表示されるべきではないのですか?

答えて

8

Dictionaryhash tableを使用して実装され、O(1)ルックアップで連想配列を表すために頻繁に使用されます。ハッシュテーブルは、通常、少数のキー/値ペア(バケットしきい値以下)のハッシュコードの整数値でソートされ、その後は逆の挿入順序でソートされます。これは、ほとんどの場合、任意の合理的または予測可能な順序でソートされるハッシュテーブルに頼ることができないことを意味します。

関連する問題