HashTable
xuxu120
这个作者很懒,什么都没留下…
展开
-
HashMap的工作原理jdk1.8-源码调试
jdk1.8版本对HashMap改动很大,jdk1.7之前的版本,HashMap采用的是链表+位桶的方式,也就是我们经常说的散列表的方式,但是在jdk1.8版本中,HashMap采用的是位桶+链表/红黑树的方式,也是非线程安全的。当某个位桶的链表的长度到达某个阈值的时候,这个链表就转化为红黑树。转载 2016-08-26 11:05:31 · 1605 阅读 · 0 评论 -
HashMap的工作原理JDK1.6
HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表(拉链法)来解决hashCode碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 HashMap在每个链表节点中储存键值对对象。如果两个不同的键对象的hashCode相同,那转载 2016-08-26 10:52:47 · 375 阅读 · 0 评论 -
ConcurrentHashMap实现原理-源码调试
ConcurrentHashMap线程安全的总结是我从源码分析出来的:ConcurrentHashMap所谓线程安全是如果没有哈希冲突使用compareAndSwapObject方式新增节点,如果哈希冲突的时候锁住哈希冲突的节点,这样新增的节点是线程安全的,而 ConcurrentHashMap又不像hashtable那样整个put方法被锁定,所以性能比hashtable要好,因为这样不影响其他节点的插入和读取。转载 2016-08-26 11:28:35 · 982 阅读 · 0 评论