3

Javaディクショナリクラスに1つのキーに対して複数の値を含めることは可能ですか?

4

4 に答える 4

3

まず、ディクショナリ クラスについて: そのクラスは廃止されたと見なされます。ドキュメントでは、代わりに Map を使用することを推奨しています。

探しているこの種のコレクションは、マルチマップと呼ばれます。リストを使って自分で実装することもできますが、それは面倒です。

Apache コレクションまたは Google コレクションの MultiMap を使用することができます。私は個人的に Apache コレクションのファンですが、それらはジェネリックを実際にはサポートしていないため、Google マルチマップの方が安全かもしれません。

于 2009-06-27T05:43:51.700 に答える
2

ApacheCommonsコレクションのMultiMapクラスを確認する必要があります

于 2009-06-27T04:41:03.750 に答える
2

レギュラーMapを使用して、値をCollectionsにすることができます。

Map<Integer, List<String>> map = new HashMap<Integer, List<String>>();

map.put(0, Arrays.asList("foo", "bar"));
map.put(1, new ArrayList<String>());

map.get(1).add("blag");

または、 ApacheCommonsCollectionsMultiMapから使用できます。

AMultiMapは、Mapセマンティクスがわずかに異なるaです。マップに値を入力するとCollection、そのキーのに値が追加されます。Collection値を取得すると、そのキーに設定されたすべての値を保持したまま、が返されます。

例えば:

MultiMap mhm = new MultiHashMap();
mhm.put(key, "A");
mhm.put(key, "B");
mhm.put(key, "C");
Collection coll = (Collection) mhm.get(key);

coll「A」、「B」、「C」を含むコレクションになります。

(残念ながら、MultiMapジェネリックは使用しません。)

于 2009-06-27T04:43:00.753 に答える
2

もちろん。値としてリストを使用します。

于 2009-06-27T04:38:32.093 に答える