未知の深さJavaのネストされたハッシュマップ
質問
ネストされたハッシュマップが必要な要件があります。しかし、深さは実行時に決定されます。たとえば、実行時にユーザーが3と言う場合、私のハッシュマップは
HashMap<String, HashMAp<String, HashMap<String, String>>>
彼が4と言ったら
HashMap<String, HashMAp<String, HashMap<String, HashMap<String, String>>>>
この種の機能を実装する方法はありますか?他のいくつかのAPIまたはツールキット??
解決
ああ、これはほぼ間違いなく非常に悪い考えです。
あなたは本当に木やグラフが欲しい、そしてそれを書く方法がわからないように聞こえるので、あなたはそれをハッシュマップで動作させるためにこの表記を発明しています。
しないでください。
必要なものを適切に書く方法を理解することで、より良いでしょう。
非常に正当な理由であなたが望むことをするライブラリはありません - あなたはすべきではありません。
他のヒント
- 10のデータ構造上の10の関数よりも、1つのデータ構造で100の関数を動作させることをお勧めします。アラン・ペルリス。
あなたが尋ねることは、ClojureのStandrad Libraryに実装されています:述べられていることとは反対に、ネストされたハッシュマップは、木を表す明白で絶対に正気な方法です。 `` `` clojure(def my-tree {:a {:aa 0}:b 0:c {:cc 0:dd {:e 0})
(=(getin my-tree [:c:dd:e])0) `` `
また、un objetグラフを介してそれを表現することもできますが、ハッシュマップの一般性は失われます。オブジェクトは、とにかく概念的なハッシュマップであり、それが持つことができる属性に制限があります。
タイプのハッシュマップを確実に定義できます HashMap<String, ?>
タイプの安全性を犠牲にして動的な深さを取得します。
しかし、Duffymoは正しいです - あなたはおそらく構造を悪用しているでしょう。なぜそのようなタイプが欲しいのですか?
あなたは見たいかもしれません 木に関するこの記事. 。あなたはそれが役に立つと思うかもしれません。