java - 具有多个值的 HashMap

标签 java multimap

我想在java中实现具有多个值的哈希表,即

// if sample is a hashmap
sample.put(1,1);
sample.put(1,2);

sample.get(1);将返回 2 个值。

我怎样才能实现这个目标?

最佳答案

您可以使用多重贴图来代替。它在列表中保留一个键的多个值。 commons-collections中有实现并在 Guava .

Multimap<String, String> multimap = ArrayListMultimap.create();   
multimap.put("ducks", "Huey");
multimap.put("ducks", "Dewey");
multimap.put("ducks", "Louie");
Collection<String> ducks = multimap.get("ducks");
System.out.println(ducks); // [Huey, Dewey, Louie]

它类似于使用 Hashmap,其中值是列表,但您不必显式创建列表。

以自己动手的方式完成的相同示例如下所示:

Map<String, List<String>> map = new HashMap<>();
map.put("ducks", new ArrayList<String>());
map.get("ducks").add("Huey");
map.get("ducks").add("Dewey");
map.get("ducks").add("Louie");
// or as an alternative to the prev 4 lines:
// map.put("ducks", new ArrayList<String>(
//     new String[] {"Huey", "Dewey", "Louie"}));
Collection<String> ducks = map.get("ducks");
System.out.println(ducks); // [Huey, Dewey, Louie]

请注意,您可以使用 Multimap 作为构建器并调用 asMap就可以返回 map 。

关于java - 具有多个值的 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25917531/

相关文章:

java - 本地运行的 Hive 包含 LZO 的 native 库

java - 在两个字符串上查找 Levenshtein 距离

java - 如何使用 Guava Multimap 的 replaceValues 方法?

c++ - 关于C++中STL容器的问题

java - 用于异构 Multimap 的 Gson 适配器

java - 如何在多 map 中添加值

java - 如何在 JUnit 4.x 中创建嵌套的测试套件?

java - Java中的策略模式有更好的替代方法吗?

c++ - 如何在一段时间内从 multimap 中删除多个项目?

Java的ByteBuffer比较: Comparing a byte to itself "For float and double"?