我想在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/