-3

我有以下地图..

Map<String, Collection<Integer>> multiValueMap = new HashMap<String, Collection<Integer>>();
         multiValueMap.put("a", new ArrayList<Integer>());
         multiValueMap.get("a").add(new Integer(10));
         multiValueMap.get("a").add(new Integer(20));
         multiValueMap.get("a").add(new Integer(30));

         System.out.println("There are "+multiValueMap.size()+" elements in the map.");
         System.out.println("Content of multiValueMap are...");
         Set s=multiValueMap.entrySet();
         Iterator itr=s.iterator();
         while(itr.hasNext())
         {
             Map.Entry m=(Map.Entry)itr.next();
             System.out.println(m.getKey()+"\t"+m.getValue()+"\t"+ m.hashCode());
          }

这个输出是..

There are 1 elements in the map.
Content of multiValueMap are...
a   [10, 20, 30]    39954

请告知是否可以通过 Guava Multimap 实现同样的事情,如果那样,请告知..!!

4

2 回答 2

1
 Multimap<String, Integer> multimap = ArrayListMultimap.create();
 multimap.putAll("a", ImmutableList.of(10, 20, 30));
 System.out.println("There are " + multimap.keySet().size() +
     " elements in the map.");
 System.out.println("Content of multimap are...");
 for (Map.Entry<String, Collection<Integer>> asMapEntry :
     multimap.asMap().entrySet()) {
   System.out.printf("%s\t%s\t%s%n", asMapEntry.getKey(), asMapEntry.getValue(),
       asMapEntry.hashCode());
 }
于 2012-12-05T17:43:52.843 回答
0

要获取一个中的键数,可以MultiMap使用Multimap.keySet().size()

您还可以迭代此集合并使用它Multimap.get(key) 来获取附加到此键的所有值的集合。

于 2012-12-05T14:18:11.833 回答