0

メインテーブル

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
}

質問 -

  1. 私のJava構造は正しく、私の目的を解決しますか?
  2. 下位レベルと上位レベルの両方で更新がある場合、下位レベルの値が優先され、更新されることはありません。そのため、ブール値の isUpdated 変数を維持して、下位レベルでの更新を尊重する必要があるかどうかを確認していますか?
  3. すべてのノードにわたってツリーを上下にトラバースするために、事前注文、事後注文構造は本当に役に立ちますか? すべてのレベルで何かを更新すると、すべての下位レベルに分散する必要があり、その逆も同様です。

これは単純な表現ですが、少なくとも 5 ~ 6 レベルのデータを持つ非常に複雑な構造を扱っています。

4

1 に答える 1

0

ツリー データ構造に XML を使用できます。Apache XML http://xerces.apache.org/xerces-j/api.htmlを使用することをお勧めします。ツリー全体を簡単にトラバースできます。

于 2012-12-27T07:31:59.670 に答える