2011-05-09 118 views
0

,這是什麼層次的最佳對象的數據結構什麼是此層次結構的基於對象的最佳數據結構?

"text1" 
    |---> "text2" 
      |-----> List of objs 

我可以做類似

class Test(){ 
     String text1; 
     HashMap<String,List<Obj>> text2ListOfObjs; 
} 

這個類的消費者會做這樣的事情

for(Test test: tests){ 
    iterate over hashmap 
     .... 
} 
任何其他

建議?

+2

沒有text1和text2代表的內容我在這裏看不到問題。是同一類的「text1」和「text2」實例嗎? – 2011-05-09 18:16:43

+2

他們代表什麼?會不會有一個孩子到text1,那是text2和孩子?您如何訪問數據,以及爲什麼需要訪問數據? – Kaj 2011-05-09 18:19:21

+0

您是否想要表示一個XML文檔? – CoolBeans 2011-05-09 18:19:26

回答

2

如果要將「text1」映射到「text2」並將其映射到對象列表,爲什麼不使用嵌套映射:Map<String, Map<String, List<Obj>>>

+0

可能是因爲你然後不會有什麼字符串重複的線索:) – Kaj 2011-05-09 18:30:22

+1

嗯,我不知道這些字符串代表什麼,所以我應該告訴他什麼? ;) – Thomas 2011-05-09 20:42:09

0

面向對象的設計應該表達意義。你應該給我們這個層次的實際上下文,而不是抽象的元素。任何數據結構都可以用來反映你所呈現的元素,但它不一定是一個好的設計,這取決於意義,行爲和上下文。

幾個可能的結構:

class Person { 
    String name; 
    Relation relation; 
} 

class Relation { 
    String type; 
    List<Person> members; 
} 

例如名爲「阿尼」和類型的「朋友」關係中,並且爲成員的人與名字「伯特」,「米妮」和「喬爾人」。

class Song { 
    String title; 
    String composer; 
    List<Note> notes; 
} 

或更爲平坦的模型:

Object[] data; 

,我們可以用實例:

data = new Object[] { "text1", "text2", new Object(), new Integer(), new BlaBla() }; 

所有這些都是「面向對象」的模型擬合的法案,但它是最好的取決於你想表達什麼以及系統應該如何表現。

相關問題