
数据结构
timo_xin
codeing
展开
-
必知必会--Hashtable扩容机制
前言今天阅读源码时,在Hashtable的扩容机制看到一个有意思的点,整理之后写出来分享给大家。正文Hashtable的扩容机制通过rehash()来实现,如果Hashtable中元素的个数大于临界值时,会调用rehash()来实现扩容。临界值的大小等于Hashtable数组的大小与负载因子相乘,默认的负载因子大小为0.75。protected void rehash() { ...原创 2019-09-16 14:54:32 · 11294 阅读 · 0 评论 -
必知必会--HashMap容量细节
絮叨HashMap作为Java中最常用的数据结构之一,在工作中使用HashMap的频率和你遇见NullPointException一样多,在面试中被问到的概率和问你名字的概率一样大。既然工作,面试经常遇到,我们有必要熟悉HashMap的每一个细节。作为最常用的数据结构之一,我们都知道HashMap的容量为2次幂。当被问到为什么是2次幂时,大家应该都能回答出来,是为了均匀分散到数组中。但是2次幂...原创 2019-12-13 19:43:11 · 624 阅读 · 3 评论 -
必知必会--ConcurrentHashMap锁分段原理
前言HashMap是线程不安全的类,JDK1.8之前多线程的情况下,如果多次put操作会导致死循环,尽管JDK1.8对HashMap进行了优化,但是HashMap并不是为了线程安全而设计的类,因此多线程下我们应该尽量避免使用HashMap。Hashtable是线程安全的类,但是当Hashtable进行put操作时会将整个Hashtable对象锁起来,只允许一个线程向Hashtable中pu...原创 2019-10-12 12:21:31 · 3147 阅读 · 1 评论 -
B树,B+树图文详解
1. B树1.1 B树的定义B树也称B-树,它是一颗多路平衡查找树。我们描述一颗B树时需要指定它的阶数,阶数表示了一个结点最多有多少个孩子结点,一般用字母m表示阶数。当m取2时,就是我们常见的二叉搜索树。一颗m阶的B树定义如下:1)每个结点最多有m-1个关键字。2)根结点最少可以只有1个关键字。3)非根结点至少有Math.ceil(m/2)-1个关键字。4)每个结点中的...转载 2019-07-23 15:28:49 · 518 阅读 · 0 评论