java 具有多个值的HashMap [重复]

hwazgwia  于 2023-02-28  发布在  Java
关注(0)|答案(3)|浏览(80)
    • 此问题在此处已有答案**:

(21个答案)
七年前就关门了。
我想在java中实现具有多个值的哈希表,即

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

并且sample.get(1);将返回2个值。
我怎样才能做到这一点?

3vpjnl9f

3vpjnl9f1#

您可以使用Multimap来代替。它在列表中为一个键保存多个值。在commons-collectionsGuava中有实现。

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]

这类似于使用哈希Map,其中的值是列表,但您不必显式地创建列表。
用自己动手的方式完成的相同示例如下所示:

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。

w1e3prcc

w1e3prcc2#

尝试HashMap<Key, List<Value>>您将需要管理列表,如果列表不存在则创建列表,如果需要则添加列表。
Guava还提供了Multimap实现

dced5bon

dced5bon3#

这样做

Map<String, List> map = new HashMap<String, List>();
List listOne = new ArrayList();
for(int i=0;i<4;i++){
    listOne.add(i);
}
List listTwo = new ArrayList();
for(int i=4;i<6;i++){
    listTwo.add(i);
}
map.put("listOne",listOne);
map.put("listTwo",listTwo);

或者您甚至可以使用Guava的多Map

相关问题