Как перебрать мультикарту Google - PullRequest
22 голосов
/ 14 октября 2010

Я должен перебрать мультикарту Google.Но

  1. Я использую jdk 1.4 и не могу перейти на более высокую версию.Поэтому я не могу использовать общие функции.
  2. Моя мультикарта может иметь несколько значений для ключа.
  3. Может быть ситуация, когда значение мультикарты является мультикартой само по себе

Ответы [ 3 ]

47 голосов
/ 14 октября 2010

Google Collections (сейчас Guava) - это библиотека 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 с:

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

Вы также можете получить соответствующие Collection для каждой клавиши в keySet(), используя get, как описано в bwawok.

Edit: Я не думал о том факте, что в Java 1.4 также не было цикла foreach, поэтому, конечно, каждый цикл выше должен был бы быть написан с использованием Iterator s.

10 голосов
/ 14 октября 2010

Я на 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 );

    }

Каждое получение вернет вам все, что соответствует этому ключу. Тогда вы можете либо снять их, либо сделать с ними все, что захотите.

3 голосов
/ 02 февраля 2017

Когда вы используете мультикарту гуавы, значения сохраняются в коллекции, а не в списке

 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);
        }
    }
...