27

私はグーグルマルチマップを繰り返す必要があります。だが

  1. jdk 1.4を使用していますが、より高いバージョンに切り替えることができません。だから私は一般的な機能を使用することはできません。
  2. 私のマルチマップは、キーに対して複数の値を持つことができます。
  3. multimapの値自体がmultimapである場合があります
4

4 に答える 4

53

Google Collections (現在の Guava) は Java 1.5 ライブラリです... Java 1.4 にジェネリックがないことを無視しても、おそらく 1.5 で追加されたものを使用しているため、互換性がありません。とはいえ、 a を反復処理するにはさまざまな方法がありますMultimap

キーによると、Java8 のコレクション ペア:

multimap.asMap().forEach((key, collection) -> {...});

すべての値を反復します。

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()) { ... }

bwawok で説明されているように、使用Collection中の各キーに対応するものを取得することもできます。keySet()get

編集: Java 1.4 にも foreach ループがないという事実については考えていませんでした。そのため、もちろん、上記の各ループはIterators を直接使用して記述する必要があります。

于 2010-10-14T16:21:41.653 に答える
11

私はJava 6を使用していますが、これはかなり近いはずです...Java 1.4っぽいものを見逃していたらごめんなさい

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

    }

get を実行するたびに、そのキーに一致するすべてのものが返されます。次に、それらを剥がすか、好きなことをすることができます。

于 2010-10-14T15:58:19.100 に答える