具有多个值的HashMap

我想在java中实现具有多个值的Hash表

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

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

我怎样才能做到这一点?

您可以改用Multimap。 它为列表中的键保留多个值。 在commons-collections和Guava中有实现。

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

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

同样的例子做了自己动手的方式:

 Map> map = new HashMap<>(); map.put("ducks", new ArrayList()); 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( // new String[] {"Huey", "Dewey", "Louie"})); Collection ducks = map.get("ducks"); System.out.println(ducks); // [Huey, Dewey, Louie] 

请注意,您可以将Multimap用作构建器并在其上调用asMap以返回地图。

尝试HashMap>您需要管理列表,如果它不存在则创建,并在需要时添加。

Guava还提供了Multimap实现

这样做吧

 Map map = new HashMap(); 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的Multimap