我是否正确创建了Java对象?

时间:2012-12-26 19:56:26

标签: java design-patterns data-structures

主要表

ID  COUNTRY_ID  STATE_ID    Status      QTY[%]
1   1       1       Confirmed   80
2   1       1       Tentative   20
3   1       2       Confirmed   70
4   1       2       Tentative   30
5   2       3       Confirmed   50
6   2       3       Tentative   50

国家/地区表

COUNTRY_ID  COUNTRY_NAME
1       United States
2       India

州表

STATE_ID    STATE_NAME
1       New York        
2       New Jersey  
3       Delhi

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

例如,UI看起来像 -

ALL
    Total Confirmed     200         
    Total Tentative     100 

United States
    Total Confirmed     150
    Total Tentative     50  

    New York
        Confirmed       80
        Tentative       20
    New Jersey
        Confirmed       70
        Tentative       30

India
    Total Confirmed     50
    Total Tentative     50  

    Delhi
        Confirmed       50
        Tentative       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. 预购,后序结构对于我在所有节点上上下遍历树真的很有用吗?因为,如果我更新所有级别的内容,它需要分布在所有较低级别,反之亦然。
  4. 这是一个简单的表示,但我处理的是一个非常复杂的结构,我至少有5-6个数据级别。

1 个答案:

答案 0 :(得分:0)

您可以使用XML作为树数据结构,我建议使用Apache XML http://xerces.apache.org/xerces-j/api.html,您可以轻松遍历整个树。