2

java中是否有内置的哈希映射实现,其值是链表?

就像,如果我说:

 map.put(1, "A");
 map.put(1, "B");

然后它会自动将 A 和 B 添加到链表中。当我从地图中检索时,如:

  map.get(1)

我得到一个包含它们的列表?

4

3 回答 3

4

Java 没有,但您可以使用Google Guava的MultiMap

类似于 Map 的集合,但可以将多个值与单个键相关联。如果您使用相同的键但值不同的两次调用 put(K, V),则多重映射包含从键到两个值的映射。

get(K)、keySet()、keys()、values()、entry() 和 asMap() 方法返回作为多图视图的集合

这篇文章Multimaps - Google Guava为您提供了有关如何使用它以及如何HashMap使用List作为值来完成它的完整想法。

于 2012-11-02T19:38:30.730 回答
2

第二个 put 将覆盖第一个 put。您将得到 B 作为响应。

根据javadoc

如果映射先前包含键的映射,则替换旧值

如果要保留两个条目,则需要使用第三方库 google guava MultiMap

于 2012-11-02T19:38:20.503 回答
1

不,只是建立你自己的。

首先你拿一个HashMap,如果键不存在你把linkedList放在......

简单的...

于 2012-11-02T19:39:14.270 回答