12

Multimapa のエントリを反復処理するための対応する方法を探していますMap。つまり、次のとおりです。

Map<K,V> map = ...;
for (Map.Entry<K,V> entry : map.entrySet())
{
    K k = entry.getKey();
    V v = entry.getValue();
}

次のうちどれが良いですか?(あるいは、もっと重要なこととして、違いは何ですか?)

Multimap<K,V> mmap = ...;
for (Map.Entry<K,Collection<V>> entry : mmap.asMap().entrySet())
{
    K k = entry.getKey();
    Collection<V> v = entry.getValue();
}

また

Multimap<K,V> mmap = ...;
for (K k : mmap.keySet())
{
    Collection<V> v = mmap.get(k);
}
4

2 に答える 2

14

どちらも有効です。2 番目の方が読みやすい傾向にあります (特にList、aListMultimapなどから実際の値を取得できるため) が、最初の方がより効率的である可能性があります (ある程度、重要である場合とそうでない場合があります)。

于 2011-07-14T01:47:46.307 に答える
3

グアバの人々は、ニーズに応じて、どちらの方法でも実行できるように十分に配慮していたと思います. たとえば、構造が重要であり、マルチマップをグループ化して表示したい場合は、後者が優先されます。OTOH、マルチマップをキーと値のペアのセットとして表示したい場合、重複キーは重要ではなく、mmap.entries を使用することをお勧めします。マルチマップが使用されているコンテキストで何が最も適切かは、実際には問題です。

于 2011-07-12T18:38:00.363 に答える