代码之家  ›  专栏  ›  技术社区  ›  Amit Kumar Gupta

如何迭代Google Multimap

  •  21
  • Amit Kumar Gupta  · 技术社区  · 15 年前

    我必须反复浏览谷歌地图。但是

    1. 我正在使用JDK1.4,无法切换到更高版本。所以我不能使用通用特性。
    2. 我的多重映射可以有一个键的多个值。
    3. 当multimap的值本身就是multimap时,可能会出现这种情况。
    3 回复  |  直到 9 年前
        1
  •  44
  •   ColinD    15 年前

    谷歌收藏(现在是番石榴)是一个Java 1.5库…即使忽略Java 1.4中泛型的缺乏,它也可能使用1.5中添加的东西,使其不兼容。也就是说,有多种方法可以迭代 Multimap .

    您可以迭代所有值:

    for (Object value : multimap.values()) { ... }
    

    或所有键(映射到迭代中多次出现的多个值的键):

    for (Object key : multimap.keys()) { ... }
    

    或密钥集:

    for (Object key : multimap.keySet()) { ... }
    

    或条目:

    for (Map.Entry entry : multimap.entries()) { ... }
    

    或价值 Collection S:

    for (Collection collection : multimap.asMap().values()) { ... }
    

    你也可以得到相应的 收藏 对于中的每个键 keySet() 使用 get 如BWawok所述。

    编辑: 我没有想到Java 1.4也没有POLACH循环,所以当然,上面的每个循环都必须使用 Iterator S直接。

        2
  •  10
  •   bwawok    15 年前

        Set keySet = listmultimap.keySet();
        Iterator keyIterator = keySet.iterator();
        while (keyIterator.hasNext() ) {
            String key = (String) keyIterator.next();
            List values = listmultimap.get( key );
    
        }
    

    每次得到的东西都会把你所有与那把钥匙匹配的东西都拿回来。然后你要么剥掉它们,要么用它们做你想做的任何事情。

        3
  •  2
  •   Jana    9 年前

    当使用guava multimap时,值存储在集合中,而不是列表中

     Set<String> keys = multiMap.keySet();
        for (String keyprint : keys) {
            System.out.println("Key = " + keyprint);
            Collection<String> values = multiMap.get(keyprint);
            for(String value : values){
                System.out.println("Value= "+ value);
            }
        }
    
    推荐文章