Javaディクショナリクラスに1つのキーに対して複数の値を含めることは可能ですか?
4 に答える
まず、ディクショナリ クラスについて: そのクラスは廃止されたと見なされます。ドキュメントでは、代わりに Map を使用することを推奨しています。
探しているこの種のコレクションは、マルチマップと呼ばれます。リストを使って自分で実装することもできますが、それは面倒です。
Apache コレクションまたは Google コレクションの MultiMap を使用することができます。私は個人的に Apache コレクションのファンですが、それらはジェネリックを実際にはサポートしていないため、Google マルチマップの方が安全かもしれません。
ApacheCommonsコレクションのMultiMapクラスを確認する必要があります
レギュラーMap
を使用して、値をCollection
sにすることができます。
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
から使用できます。
A
MultiMap
は、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
ジェネリックは使用しません。)
もちろん。値としてリストを使用します。