12

我正在寻找相应的方式 forMultimap来迭代 a 的条目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

它们都是有效的;第二个往往更容易阅读(尤其是当您可以List从 aListMultimap等中获得实际结果时),但第一个可能更有效(在某种程度上对您来说可能或可能不重要)。

于 2011-07-14T01:47:46.307 回答
3

我会说番石榴的人足够体贴,可以让你根据你的需要做任何一种方式。例如,如果结构确实很重要,并且您希望以分组方式查看您的多图,则后者将是首选。OTOH,如果您希望将多重映射视为一组键值对,其中重复键无关紧要,您可能更喜欢使用 mmap.entries。这实际上是在使用多图的上下文中最合适的问题。

于 2011-07-12T18:38:00.363 回答