具有多个值的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