3

Java字典类中的单个键是否可以有多个值?

4

4 回答 4

3

首先,关于字典类:该类被认为已过时,文档建议改用 Map。

您正在寻找的这种集合称为多图。您可以使用列表自己实现一个,但这很乏味。

您可能想要使用 Apache Collections 或 Google Collections 中的 MultiMap。虽然我个人是 apache 集合的粉丝,但它们并不真正支持泛型,因此 Google 多图可能更安全。

于 2009-06-27T05:43:51.700 回答
2

当然。使用列表作为值。

于 2009-06-27T04:38:32.093 回答
2

你应该看看 apache commons 集合中的 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");

或者您可以MultiMapApache Commons Collections使用。

AMultiMapMap语义稍有不同的 a。将值放入映射中会将值添加到Collection该键处的 a 中。获取一个值将返回 a 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 回答