2010-12-15 19 views
2

1つのキーと複数の値を持つディクショナリ(HashTable、Map、...)が必要です。タプル型のJavaディクショナリ値

I.e.私はこれを取得するにはどうすればよいHashTable<Key, [value1, value2]>

よう

何かをしたいですか?

答えて

7

私が考える最も簡単な方法:

Map<Key, List<Value>> 

あなたがいうだけのタプル(ペア、3、または...)を持っているだろう場合は、Pairクラスを作成することができます。

class Pair<E,F, ...> { 

    public E one; 
    public F two; 
    ... 

} 

そして、そのようMapを使用します。

Map<Key, Pair<Value, Value>> 
+0

大丈夫、別の解決策があると思いました。私はJavaを初めて使用しているので、これをサポートするデータ構造があると思っていました。 – ptikobj

+0

@pitik、これをサポートするネイティブデータ構造はないと思います。私は一度も使ったことがありません。 – jjnguy

+0

クラスを作成することをお勧めします。ジェネリック型の内部でジェネリック型を使用すると、いくつかの問題が発生します。 –

1

定義された長さの値として配列を保存するだけですか?

2

どうHashTable<Key, List<Value>>は?

1

あなたの値に新しい(公開されていない)クラスを作成するか、複数のマップを使用すること(ゆっくりと実行すること)。

0

あなたが提案のいくつかを使用することができますので、Java言語でのタプルのようなものは、ありません:

  • 店に2を保持するカスタムオブジェクトを設定し、

    • 店配列
    • 店リストを値

    また、かなり一般的なオブジェクトを作成することもできます:ペア。

    public Pair<A,B> { 
        public Pair(A a, B b) { 
        this.a = a; 
        this.b = b; 
        } 
        public A a() { return a; } 
        public B b() { return b; } 
    } 
    
  • 1

    GoogleのGuavaはこれを行うマルチマップを提供します。 Javadoc

    +0

    おかげさまで、あなた自身のクラスを書くよりも手軽です。正確に私が探していたもの。 – ptikobj

    関連する問題