2

重複の可能性:
Map <K1、K2、V>の実装、つまり2つのキー?

名前とIDをキーと値のペアとして保存する必要があります。ただし、プログラムで名前とIDの両方で検索する必要がある場合があります。2つのHashMapを作成したくない(またはname-idとid-nameのペアを格納することでメモリ消費量を2倍にしたい)

そのための適切なデータ構造は何ですか?このためのJavaの標準実装はありますか?

4

3 に答える 3

3

guavaのBiMapも使用できます。そして、逆マップを取得するのは次のように簡単です。

BiMap<Integer, String> biMap = HashBiMap.create();
biMap.put(1, "a");
biMap.put(2, "b");
BiMap<String, Integer> invertedMap = biMap.inverse(); //to get the name,id map

唯一の制約は、キーと値が一意である必要があるということです。

于 2012-11-02T20:43:31.740 に答える
0

Commons-Collectionsには、使用できるBidiMapがあります。

http://commons.apache.org/collections/apidocs/org/apache/commons/collections/BidiMap.html

于 2012-11-02T20:24:45.053 に答える
0

GuavaにはHashBiMap、マッピングの両方向を追跡する機能があります。現在、その実装は基本的HashMapに各方向を維持しますが、次のリリースではカスタムデータ構造を使用してメモリを約38%節約します。

基本的に、重複する値を拒否することを除いて、とHashBiMapまったく同じように動作しMap、を呼び出すことで他の方向(キーへの値)のビューを取得できますinverse()

(開示:私はグアバに貢献します。)

于 2012-11-02T20:43:11.647 に答える