1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Java,集合与并发包,产品开发一部,-,姜子祥,目 录,contents,A,一,、,java,集合,A,二、,java,并发包,Collection,体系,List Set Map,ArraryList,HashSet,List Set Map,HashMap,数据结构,List Set Map,HashMap Entry,List Set Map,List Set Map,HashMap,数据分布策略,Collection,序列化疑惑,List Set Map,HashMap,数学玄机,左边两组是数组长度
2、为,16,(,2,的,4,次方),右边两组是数组长度为,15,。两组的,hashcode,均为,8,和,9,,但是很明显,当它们和,1110“,与”的时候,产生了相同的结果,也就是说它们会定位到数组中的同一个位置上去,这就产生了碰撞,,8,和,9,会被放到同一个链表上,那么查询的时候就需要遍历这个链表,得到,8,或者,9,,这样就降低了查询的效率。同时,我们也可以发现,当数组长度为,15,的时候,,hashcode,的值会与,14,(,1110,)进行“与”,那么最后一位永远是,0,,而,0001,,,0011,,,0101,,,1001,,,1011,,,0111,,,1101,这几个位置永
3、远都不能存放元素了,空间浪费相当大,更糟的是这种情况中,数组可以使用的位置比数组长度小了很多,这意味着进一步增加了碰撞的几率,减慢了查询的效率,List Set Map,CAS,指令,AtomicXXX,原子操作,线程池,ThreadPoolExecutor,锁,AQS Lock,独占锁 共享锁,Lock-Free,常用工具,BlockingQueue ConcurrentHashMap ReentrantLock ReentrantReadWriteLock,CountDownLatch CopyOnWriteArrayList CyclicBarrier Semaphore,ExecutorCompletionService,java.util.concurrent,ConcurrentHashMap,java.util.concurrent,ConcurrentHashMap,java.util.concurrent,ConcurrentHashMap,java.util.concurrent,AbstractQueuedSynchronizer(AQS),独占锁,ReentrantLock,原理,共享锁,CountDownLatch,原理,java.util.concurrent,Doug Lea,顶礼膜拜,大神,