2016-09-16 6 views
1

私は現在、別のHashtableのキーと値のペアに値としてHashtableを持つというコンセプトに苦しんでいます。ハッシュテーブルは別のハッシュテーブルの値として推奨されますか?

Hashtable<Key,Hashtable<Key,Value> table; 

私の現在のプロジェクトでは、ノード構造(ツリービュー)のようなデータを2回グループ化する方法が必要です。

  • group1に
    • 要素1
    • 要素2
  • グループ2
    • 要素3
    • element4
    • :ここで私が保存するデータの種類の簡単な例を示します。説明したようにこれは希望のグループ私のデータ上記のHashtableコンストラクトを使用して、または「ノード・コレクション」を作成している私の心に来た

    ザ・しか考えてエレメント5

。 (このような "ノードコレクション"はJava APIに存在しますか?)

ノードコレクションアイデアよりもHashtableアイデアを使用する方が良いですか?

+2

つまり、「すべての*」に「Hashtable」を使用するのは悪い考えです。 'HashMap'を使うべきです。 –

答えて

2

一般的な構造の利点は、すぐに使用できる多くのニーズに対応することですが、その難点は読みやすさが低く、意味がないことです。 2つの宣言を比較してください:

Hashtable<Key1,Hashtable<Key2,Value2>> 

Hashtable<Key,BoughtItemsMap> 

これは2レベルのグループ化構造には十分です。だから、あなたもそれが3レベルのためになるか想像もつかない、より良いたい:

Hashtable<Key1,Hashtable<Key2,Hashtable<Key3,Value3>>> 

それはノード・コレクション - アイデアオーバーのHashtable-アイデアを使用することが有利ですか?

それはあなたのニーズによって異なります。Hashtableの(またはより良い、地図)は、キーを値にマップするために使用されます。 A コレクションは、マップしません。ちょうど値を含みます。

したがって、構造の第2レベルでマッピングが必要ない場合は、コレクションで十分です。このようなもの:

class MyCollectionOfElements extends ArrayList<Element>{...} 

Map<Key, MyCollectionOfElements> map=new HashMap<Key, MyCollectionOfElements>(); 
3

なぜそれは適切ではありませんか?物事をより複雑にすると、データ構造として使用する独自のクラスを設計することに頼ることがあります。

関連する問題