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 德里

我有一个用户界面,其中数据需要表示为树,并且用户能够在任何级别更新数量,并且应该相应地分配 -

例如,用户界面看起来像 -

全部
    确认总数 200         
    总暂定 100

美国
    确认总数 150
    总暂定 50  

    纽约
        已确认 80
        暂定 20
    新泽西州
        已确认 70
        暂定 30

印度
    确认总数 50
    总暂定 50  

    德里
        已确认 50
        暂定 50

如果我们仔细观察,下层表示的数据直接来自数据库,但在上层它们只是来自下层的数据的聚合。

我想我有一个要求,用户可以更新他们需要分配到较低和较高级别的任何级别的总数。

我正在尝试使用以下实现中的前序和后序树遍历[n-ary tree with k-nodes]

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 回答