Firebaseで順序付きリストを維持したい場合は、リスト内の各項目に手動で優先順位を手動で割り当てるのが最善の方法です。つまり、リストから項目を挿入または削除すると、それに続くすべての項目の優先順位を更新する必要があります。リストの先頭にある項目の場合、これはリスト内のすべての項目を更新することを意味します。この場合に使用するデータ構造やアルゴリズムの方が優れていますか?Firebaseでの順序付きリストの実行
答えて
要素の優先度を適切に設定することで、順序付きリストを作成できます。リスト内の項目は、優先順に並び替えて並べ替えられています。また、優先度が数値で解析できる場合は、数値で並べ替えられます。
既存のリストの中央にアイテムを挿入する場合、既存のアイテムの優先順位を変更すると効果はありますが、ひどく非効率です。より良いアプローチは、値を挿入して新しい項目にその優先順位を設定する2つの項目間の優先順位を選択することです。
たとえば、優先度 "a"(または "aq"、 "az")の2つの要素の間に優先度 "a"の要素2と優先度 "b"の要素2を挿入できます。等)。
ほとんどの場合、順序付きリストを作成するときに、あらかじめアイテムを挿入するリスト内の位置を必ずしも知る必要はありません。たとえば、ゲームのリーダーボードを作成している場合、新しいスコアをリストの3番目に配置することをあらかじめ知っているのではなく、10000というスコアが得られた位置に挿入することを知っています(これは3番目に起こる可能性があります)。この場合、優先度をスコアに設定するだけでこれが達成されます。ここのリーダーボードの例をご覧ください: https://www.firebase.com/tutorial/#example-leaderboard
すぐに応答してくれてありがとう。この場合、ドラッグアンドドロップのリストを作成したいので、順序はユーザーによって定義されます。私は2つの必要な項目の間に優先順位を挿入する考えが好きですが、私は1つのことに固執しています: 'child_added'コールバックを使用しているときに次の項目がどういうことを知っていますか?後のアイテムではなく、前のアイテムだけを取得します。 –
任意順序リスト@RadfordSmithの良い解決法を見つけましたか? –
Ruby gem ranked_modelには、この問題の興味深いアプローチがあります。これは他の多くの "行為と同様の"実装のように位置整数を使用しますが、各位置移動ですべての整数を書き直すことには依存しません。代わりに、整数は大きく離れているため、各更新は1行または2行にしか影響しません。このアプローチがここに収まるかどうかを調べるためのreadmeとコードを調べる価値があります。
- 1. 行列構造の順序付きリスト
- 2. 順序付きリストListView
- 3. デストラクタ実行順序リスト
- 4. テーブル内の順序付きリスト?
- 5. Etherpad-lite順序付きリストの書式
- 6. 順序付きリストの減算
- 7. 順序付きリストと順序付けられていないリンクリストの検索
- 8. Google App Engine:順序付きリストのコレクションを実装する
- 9. の実行順序
- 10. リスト項目の箇条書きをCSS順序付きリストと非順序リストでフルコントロール
- 11. 実行ループ内での実行順序
- 12. 親の順序付きリスト内のネストされた順序付けられていないリスト
- 13. 順序付き/順序なしリストの高さが返されない
- 14. ゴルーチン実行順序
- 15. 実行順序bahaviour
- 16. リストの順序
- 17. オブジェクトの順序付きコレクション
- 18. bashスクリプトの実行順序
- 19. Javascriptのキーイベント実行順序
- 20. javascriptの実行順序
- 21. jsf f:eventsの実行順序
- 22. クロージャの実行順序
- 23. Javaアノテーションの実行順序
- 24. Verilogの実行順序
- 25. Javascriptの実行順序は、()
- 26. Javascriptコードの実行順序
- 27. ミドルウェアの実行順序は?
- 28. Impalaクエリの実行順序
- 29. @PostConstructの実行順序
- 30. jupyterノートブックセルの実行順序
私はこれを編集してより良いd.s。またはアルゴリズム - 唯一の公正な答えは「これは十分に速いのですか?あなたはそれをプロファイルしましたか? " – djechlin
ソートのアルゴリズムとは何ですか?アルファベット順ですか?数値?タイムスタンプで?私はFirebaseについてのこのような不思議な疑問について熟考していますが、通常、希望する動作を慎重に特定したら、それらを解決するのがずっと簡単です。 – Kato