我有一个要求,我需要有一个嵌套的hashmap。但深度将在运行时决定。 例如。如果在运行时,用户说3, 然后我的hashmap应该像
HashMap<String, HashMAp<String, HashMap<String, String>>>
如果他说4那么
HashMap<String, HashMAp<String, HashMap<String, HashMap<String, String>>>>
有没有办法实现这种功能?其他一些API或工具包??
答案 0 :(得分:2)
哦,这几乎肯定是一个非常糟糕的主意。
听起来你真的想要一棵树或图形并且不知道如何编写它,所以你发明了这种符号来尝试使它与HashMap一起使用。
别。
通过弄清楚如何正确地写出你需要的东西,你会感觉更好。
由于一个很好的理由,没有图书馆能够做你想做的事 - 你不应该。
答案 1 :(得分:2)
- 最好在一个数据结构上运行100个函数,而不是在10个数据结构上运行10个函数。 Alan Perlis。
醇>
你问的是在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。你可能会发现它很有帮助。