未知深度java的嵌套哈希映射

时间:2011-03-15 23:49:41

标签: java nested hashmap depth

我有一个要求,我需要有一个嵌套的hashmap。但深度将在运行时决定。 例如。如果在运行时,用户说3, 然后我的hashmap应该像

HashMap<String, HashMAp<String, HashMap<String, String>>>

如果他说4那么

HashMap<String, HashMAp<String, HashMap<String, HashMap<String, String>>>>

有没有办法实现这种功能?其他一些API或工具包??

3 个答案:

答案 0 :(得分:2)

哦,这几乎肯定是一个非常糟糕的主意。

听起来你真的想要一棵树或图形并且不知道如何编写它,所以你发明了这种符号来尝试使它与HashMap一起使用。

别。

通过弄清楚如何正确地写出你需要的东西,你会感觉更好。

由于一个很好的理由,没有图书馆能够做你想做的事 - 你不应该。

答案 1 :(得分:2)

  
      
  1. 最好在一个数据结构上运行100个函数,而不是在10个数据结构上运行10个函数。   Alan Perlis。
  2.   

你问的是在Clojure的standrad库中实现:与已经陈述的相反,嵌套的hashmaps是表示树的明显且绝对理智的方式。 ```的Clojure (def my-tree   {:a {:aa 0}    :b 0    :c {:cc 0        :dd {:e 0})

(=(get-in my-tree [:c:dd:e])    0) ```

您也可以通过un objet图表来表示它,但是您将失去哈希图的一般性:对象无论如何都是概念性的哈希映射,它对它可以拥有的属性有所限制。

答案 2 :(得分:0)

您当然可以定义类型为HashMap<String, ?>的哈希映射,并以类型安全为代价获取动态深度。

但是duffymo是正确的 - 你可能会滥用结构。你为什么想要这样的类型?

您可能需要查看this article on trees。你可能会发现它很有帮助。