如何迭代google multimap

Ami*_*pta 23 java multimap guava

我必须遍历谷歌多图.但

  1. 我使用的是jdk 1.4,无法切换到更高版本.所以我不能使用通用功能.
  2. 我的多图可以有一个键的多个值.
  3. 可能存在多图的值本身是多图的情况

Col*_*inD 48

Google Collections(现为Guava)是一个Java 1.5库...即使忽略Java 1.4中缺少泛型,它也可能使用1.5中添加的内容,使其不兼容.也就是说,有各种方法来迭代Multimap.

您可以遍历所有值:

for (Object value : multimap.values()) { ... }
Run Code Online (Sandbox Code Playgroud)

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

for (Object key : multimap.keys()) { ... }
Run Code Online (Sandbox Code Playgroud)

或者密钥集:

for (Object key : multimap.keySet()) { ... }
Run Code Online (Sandbox Code Playgroud)

或条目:

for (Map.Entry entry : multimap.entries()) { ... }
Run Code Online (Sandbox Code Playgroud)

或者值Collections:

for (Collection collection : multimap.asMap().values()) { ... }
Run Code Online (Sandbox Code Playgroud)

您还可以按照bwawok的描述获取使用中Collection每个键的相应内容.keySet()get

编辑:我没有想到Java 1.4也没有foreach循环的事实,所以当然上面的每个循环都必须Iterator直接用s 编写.


bwa*_*wok 10

我在Java 6上,但这应该非常接近...对不起,如果我错过了java 1.4ish

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

    }
Run Code Online (Sandbox Code Playgroud)

每个get都将为您提供与该键匹配的所有内容.然后你可以把它们剥掉,或者用它们做任何你想做的事.


Jan*_*ana 5

使用 guava multimap 时,值存储在 Collection 中,而不是 List

 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);
        }
    }
Run Code Online (Sandbox Code Playgroud)