我目前正在努力将Hashtable作为另一个Hashtable的键值对中的值。
Hashtable<Key,Hashtable<Key,Value> table;
在我目前的项目中,我需要一种方法将数据分组2次,有点像节点结构(树视图)。这是我想要存储的数据类型的简单示例:
我想到的唯一想法是使用上面提到的Hashtable-construct或创建一个“节点集合”,它将按照解释的方式对我的数据进行分组。 (Java API中是否存在这样的“节点集合”?)
使用Hashtable-idea是否优于node-collection-idea?
答案 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>();