遍历Map<K, Collection<V>>的正确方法
对于value为集合的map,一般直觉上我们可能会选用下面的方式遍历map中所有collection的所有对象:for(K key:map.keySet()){ for(V value:map.get(key)){ // do sth. } }实际上,这种方式在第二行上会因为对哈希表的查询浪费效率,正确的做法应该这样:for(List [more...]
对于value为集合的map,一般直觉上我们可能会选用下面的方式遍历map中所有collection的所有对象:for(K key:map.keySet()){ for(V value:map.get(key)){ // do sth. } }实际上,这种方式在第二行上会因为对哈希表的查询浪费效率,正确的做法应该这样:for(List [more...]
引子: 大家上过操作系统的都知道“生产者-消费者(Producer-Consumer)”模型,主要讨论的是进程(线程)间的互斥和同步问题,关键是对锁(lock)的申请、独占和释放,在这里我就不罗嗦了。原先我写的Java代码如下: public class Producer extends Thread{ private ProductList products = [more...]