【问题标题】:guava: Best way to iterate over the key->collection entries of a Multimap?番石榴:遍历 Multimap 的 key->collection 条目的最佳方法?
【发布时间】:2011-07-12 17:40:39
【问题描述】:

我正在为Multimap寻找相应的方式来迭代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);
}

【问题讨论】:

    标签: guava loops multimap


    【解决方案1】:

    它们都是有效的;第二个往往更容易阅读(特别是你可以从ListMultimap 中得到一个实际的List 等等),但第一个可能更有效(在某种程度上可能或可能不重要你)。

    【讨论】:

    • 您能解释一下为什么第一种方法可能更有效吗?
    【解决方案2】:

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

    【讨论】:

    • 实际上,我认为这不是 OP 所要求的区别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多