Hashtable是另一个Hashtable的推荐值吗?

时间:2016-09-16 10:46:56

标签: java oop

我目前正在努力将Hashtable作为另一个Hashtable的键值对中的值。

Hashtable<Key,Hashtable<Key,Value> table;

在我目前的项目中,我需要一种方法将数据分组2次,有点像节点结构(树视图)。这是我想要存储的数据类型的简单示例:

  • 组1
    • 元素1
    • 在element2
  • 组2
    • 元素3
    • 元素4
    • 元素5

我想到的唯一想法是使用上面提到的Hashtable-construct或创建一个“节点集合”,它将按照解释的方式对我的数据进行分组。 (Java API中是否存在这样的“节点集合”?)

使用Hashtable-idea是否优于node-collection-idea?

2 个答案:

答案 0 :(得分:3)

为什么不适合?这是一种非常正常的做事方式,但随着事情变得越来越复杂,您可能希望开始设计自己的类来用作数据结构。

答案 1 :(得分:2)

通用结构的优点是它们可以满足许多开箱即用的需求,但它的缺点是它们的可读性低,而且缺乏语义。比较这两个声明:

Hashtable<Key1,Hashtable<Key2,Value2>>

Hashtable<Key,BoughtItemsMap>

这对于两级分组结构来说已经足够了。所以你最好不要想象三级如何:

Hashtable<Key1,Hashtable<Key2,Hashtable<Key3,Value3>>>
  

使用Hashtable-idea是否优于node-collection-idea?

这取决于您的需求:Hashtable(或更好, Map )用于将键映射到值。相反,集合不会映射;只包含值。

因此,如果您的结构的第二级不需要映射,那么Collection应该足够了。像这样:

class MyCollectionOfElements extends ArrayList<Element>{...}

Map<Key, MyCollectionOfElements> map=new HashMap<Key, MyCollectionOfElements>();