关于地图的不同实施

时间:2012-12-05 14:13:34

标签: java collections map guava

我有以下地图..

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

请告知同样的事情也可以通过番石榴Multimap实现,如果那时请告知.. !!

2 个答案:

答案 0 :(得分: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());
 }

答案 1 :(得分:0)

要获取MultiMap的数量,可以使用Multimap.keySet().size()

你也可以迭代这个集合并使用Multimap.get(key)  获取附加到此键的所有值的集合。