4

我有一个要求,我需要一个嵌套的哈希图。但是深度将在运行时决定。例如,如果在运行时,用户说 3,那么我的 hashmap 应该是

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

如果他说 4 那么

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

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

4

3 回答 3

1

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

你听起来好像你真的想要一棵树或图,但不知道如何写它,所以你发明了这个符号来尝试让它与 HashMap 一起工作。

不。

通过弄清楚如何正确编写您需要的内容,您会变得更好。

没有图书馆可以做你想做的事,这是有充分理由的——你不应该这样做。

于 2011-03-15T23:53:13.233 回答
1
  1. 100 个函数在一个数据结构上运行比 10 个函数在 10 个数据结构上运行要好。艾伦·佩利斯。

你所问的是在 Clojure 的标准库中实现的:与前面所说的相反,嵌套哈希图是表示树的明显且绝对理智的方式。```clojure (def my-tree {:a {:aa 0} :b 0 :c {:cc 0 :dd {:e 0})

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

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

于 2015-02-03T09:20:17.687 回答
0

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

但是 duffymo 是正确的——你可能误用了这个结构。为什么要这样的类型?

你可能想看看这篇关于树的文章。您可能会发现它很有帮助。

于 2011-03-15T23:58:57.657 回答