对于value为集合的map,一般直觉上我们可能会选用下面的方式遍历map中所有collection的所有对象:

for(K key:map.keySet()){
    for(V value:map.get(key)){
        // do sth.
    }
}

实际上,这种方式在第二行上会因为对哈希表的查询浪费效率,正确的做法应该这样:

for(List list:map.values()){
    for(V o:list){
        // do sth.
    }
}
</pre>
或者
for(Map.Entry<k,List> entry:map.entrySet()){
    for(V o:entry.getValue()){
        // do sth.
    }
}
</pre>