2011-05-09 119 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() }; 

所有这些都是“面向对象”的模型拟合的法案,但它是最好的取决于你想表达什么以及系统应该如何表现。

相关问题