摘要:
深入理解HashMap+ConcurrentHashMap的扩容策略 前言 理解HashMap和ConcurrentHashMap的重点在于: (1)理解HashMap的数据结构的设计和实现思路 (2)在(1)的基础上,理解ConcurrentHashMap的并发安全的设计和实现思路 前面的文章已经 阅读全文
posted @ 2019-12-25 16:11
朱子威
阅读(945)
评论(0)
推荐(0)
摘要:
Java7 中实现的 ConcurrentHashMap 说实话还是比较复杂的,Java8 对 ConcurrentHashMap 进行了比较大的改动。建议读者可以参考 Java8 中 HashMap 相对于 Java7 HashMap 的改动,对于 ConcurrentHashMap,Java8 阅读全文
posted @ 2019-12-25 14:48
朱子威
阅读(469)
评论(0)
推荐(0)
摘要:
Java8 HashMap Java8 对 HashMap 进行了一些修改,最大的不同就是利用了红黑树,所以其由 数组+链表+红黑树 组成。 根据 Java7 HashMap 的介绍,我们知道,查找的时候,根据 hash 值我们能够快速定位到数组的具体下标,但是之后的话,需要顺着链表一个个比较下去才 阅读全文
posted @ 2019-12-25 14:09
朱子威
阅读(226)
评论(0)
推荐(0)
摘要:
1、默认容量? HashTable默认容量为11,计算hash的方式为如下: int hash = key.hashCode();int index = (hash & 0x7FFFFFFF) % tab.length; 根据证明,对素数或奇数直接取模,分布的会更均匀。其它Map的默认容量都为16, 阅读全文
posted @ 2019-12-25 11:23
朱子威
阅读(437)
评论(0)
推荐(0)
摘要:
哈希 Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长 阅读全文
posted @ 2019-12-25 10:47
朱子威
阅读(849)
评论(0)
推荐(0)
摘要:
什么是容量 在Java中,保存数据有两种比较简单的数据结构:数组和链表。数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。HashMap就是将数组和链表组合在一起,发挥了两者的优势,我们可以将其理解为链表的数组。在HashMap中,有两个比较容易混淆的关键字段:siz 阅读全文
posted @ 2019-12-25 10:29
朱子威
阅读(4274)
评论(3)
推荐(0)