我正在寻找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);
}
答案 0 :(得分:13)
他们都有效;第二个往往更容易阅读(特别是你可以从List
获得实际的ListMultimap
等等),但第一个可能更有效(在某种程度上可能或对你来说可能并不重要。)
答案 1 :(得分:3)
我想说,根据你的需要,番石榴人很体贴,可以让你做任何一种方式。例如,如果结构确实很重要,并且您希望以分组方式查看多图,则后者将是优先的。 OTOH,如果您希望将多重映射视为一组键值对,其中重复键无关紧要,您可能更喜欢使用mmap.entries。实际上,在使用多图表的情况下,最合适的是什么。