意味:NSDictionaryのキーと値の順序は、NSDictionaryの初期化時に指定された方法と同じですか?または、本当にキーの順序を知る必要がある場合は、別のNSArrayを維持する方がよいでしょうか?NSDictionaryのキーと値は順序付けられていますか?
答えて
いいえ、注文されていません。辞書に要素を追加したり削除したりしない限り、要素は同じ順序で残りますが、要素を追加または削除するとすぐに新しい順序が完全に異なります。
あなたが発注するキー/値が必要な場合は、代わりにNSArray(またはいくつかの他の注文データ構造)を使用します。
キーは、NSDictionaryにアクセスするときに同じ順序であることが決して保証されません。キーを比較することができれば(あなたの質問に答えられると思われます)、並べ替え順にアクセスする必要がある場合は、いつでも並べ替えることができます。
あなたは最初の配列にキーを読み、コースの配列をソートすることにより、これを行う必要があるでしょう。
NSDictionaryのは、Apple's referenceによれば、基本的にハッシュテーブルのラッパーです。そうではありません、彼らは特定の順序であることが保証されていません。
彼らはどのようにそのハッシュテーブルにアクセスしますか?単純なハッシュテーブルを見たことはありませんが、どのように見えるかを知りたいです。これは内部的に2つの同期NSArrayを使用することと大きな違いはありますか? –
ハッシュテーブルがデータ構造のように見えていますか? Wikiはかなり良いexplinationを持っています:http://en.wikipedia。org/wiki/Hash_table Appleが具体的にどのように実装しアクセスするのか知りたいのであれば、私たちが利用できる唯一のものはヘッダーファイルです;) –
そういう場合、ハッシュテーブルはほとんどすべて与えられた文字列の正しい配列インデックスを計算するハッシュ関数key +配列の大きさ。実装は難しいが、パフォーマンスは良いと思う。それが本当であれば、どれくらい多くのアイテムが辞書に追加されても問題はありません。 –
NSDictionaryのキー&値が順序付けされていません。あなたのオプション:
- あなたは
- 書き込みを望む以上
- 書き込みのラッパーであるか追加されますNSDictionaryの既存のサブクラスを見つけ、既存のクラスを見つけるために、キーの別々の配列を維持しますご注文のためのAPI
Matt Gallagherは、この問題を完全にカバーし、サンプルコードを記載したブログ投稿を“OrderedDictionary: Subclassing a Cocoa class cluster”と書いています。
実際には、2つの異なるデバイスでプログラムを実行しても、同じプログラムであっても、まったく同じバージョンのオペレーティングシステムであっても、同じ順序であっても頼りにすることはできません。
たとえば、iPad Airでプログラムを実行すると、iOSのバージョンがまったく同じ場合でも、NSDictionary内の要素の順序がiPad Retinaで同じプログラムを実行する場合と異なる場合があります。要するに
、NSDictionaryの内の要素の順序は、当てにしてはなりません。あなたはいつもそれらが不特定の順序であるかもしれないと仮定しなければなりません、それは異なるデバイスで異なるかもしれません。
- 1. 順序付けされた順序付けられていないSTLコンテナ
- 2. 順序付きリストと順序付けられていないリンクリストの検索
- 3. 複数のキー/値を持つ順序付けられていないコンテナ
- 4. 順序付けされたコレクションと順序付けられていないコレクションの利点は?
- 5. 順序付けされたリストから順序付けられていないリスト項目を除外する
- 6. 順序付けられて順序付けられていないものLLVM CmpInst比較命令?
- 7. 階層型の順序付けされたキー値ストア?
- 8. 順序付けられていないキーの配列をナビゲートする方法
- 9. PHP配列から順序付けられていないリスト
- 10. SQLAlchemy group_concat順序付けされた値
- 11. mySQLを特定の値で順序付けしてからDESC?
- 12. Scalaパーサーコンビネータでは、順序付けられていないパーサー
- 13. 順序付けられたパーティションセットのアルゴリズム
- 14. 順序付けられた値のペアをフェッチする
- 15. Pythonの順序付けられていないポイントクラウドのサーフェスリコンストラクション
- 16. 親の順序付きリスト内のネストされた順序付けられていないリスト
- 17. Primefaces LazyScheduleModel - 順序付けられていないイベントのリスト
- 18. ルビーの順序付けられていないカップル
- 19. ハッシュの順序付けられていないマップ
- 20. 順序付けられていないリストの浮動ボタン
- 21. 順序付けられていないリストの等価性
- 22. Javaの順序付けられていないペア
- 23. 順序付けられていない型のJaxbシーケンス
- 24. Java - ArrayListの順序付けられていないリストメソッド?
- 25. 順序付けられた永続キャッシュ
- 26. Javaストリームジェネレータが順序付けられていないのはなぜですか?
- 27. ラベリングの製品表から順序付けられていない製品をページ付けする方法は?
- 28. 順序付けられていないツリーパターンマッチングアルゴリズム
- 29. フォーム検証 - 順序付けられていないリスト
- 30. N値の順序付けられたセットの順列を取得する
@ kraag22:NSDictionaryドキュメンテーションのどこにも、注文に関する約束や保証がありません。単に、キーと値の不変な関連付けを管理するオブジェクトへのプログラムインタフェースです。 '-allKeys'と' -allValues'メッセージのドキュメントは、それらのメソッドから返された順序が定義されていないことを呼び出していますが、他の方法を列挙する方法をより明確にすることは悪い考えではないでしょう辞書要素。 –