メインテーブル
ID COUNTRY_ID STATE_ID ステータス 数量[%] 1 1 1 確認済み 80 2 1 1 仮 20 3 1 2 確認済み 70 4 1 2 仮 30 5 2 3 確認済み 50 6 2 3 仮 50
国表
COUNTRY_ID COUNTRY_NAME 1 米国 2 インド
状態テーブル
STATE_ID STATE_NAME 1 ニューヨーク 2 ニュージャージー 3 デリー
データをツリーとして表す必要があるユーザーインターフェイスがあり、ユーザーは任意のレベルで数量を更新することができ、それに応じて配布する必要があります-
たとえば、UI は次のようになります。
全て 合計確認済み 200 仮合計 100 アメリカ 合計確認済み 150 仮合計 50 ニューヨーク 確認済み 80 暫定20 ニュージャージー 確認済み 70 仮 30 インド 合計確認済み 50 仮合計 50 デリー 確認済み 50 仮 50
よく観察すると、下位レベルで表されるデータはデータベースから直接取得されたものですが、上位レベルでは下位レベルからのデータの集計にすぎません。
ユーザーが任意のレベルで合計を更新できるという要件があると思いますが、それに応じて下位レベルと上位レベルに配布する必要があります。
以下の実装 [k ノードを持つ n-ary ツリー] から、事前順序および事後順序のツリー トラバーサルを使用しようとしています。
http://vivin.net/2010/01/30/generic-n-ary-tree-in-java/
class State {
private String name ;
private double confirmed ;
private double tentative ;
private boolean isUpdated ;
// getters and setters
}
class Country {
private String name ;
private double totalConfirmed ;
private double totalTentative ;
private boolean isUpdated ;
private List<State> states ;
// getters and setters
public void getTotalConfirmed () {
// iterate through the list of states and add all the confirmed values from every state and return ;
}
}
class ALL {
private double totalConfirmed ;
private double totalTentative ;
private boolean isUpdated ;
private List<countries> countries;
// getters and setters
public void getTotalConfirmed() {
// iterate through the list of all countries and add all the confirmed values from every country and return ;
}
// similary setTotalConfirmed as well
}
質問 -
- 私のJava構造は正しく、私の目的を解決しますか?
- 下位レベルと上位レベルの両方で更新がある場合、下位レベルの値が優先され、更新されることはありません。そのため、ブール値の isUpdated 変数を維持して、下位レベルでの更新を尊重する必要があるかどうかを確認していますか?
- すべてのノードにわたってツリーを上下にトラバースするために、事前注文、事後注文構造は本当に役に立ちますか? すべてのレベルで何かを更新すると、すべての下位レベルに分散する必要があり、その逆も同様です。
これは単純な表現ですが、少なくとも 5 ~ 6 レベルのデータを持つ非常に複雑な構造を扱っています。