自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(4)
  • 收藏
  • 关注

原创 数据结构,java实现平衡二叉树,AVL树

之前看HashMap源码的时候遇到一些问题,jdk1.8中对HashMap做了一些优化,其中就包括当链表节点大于8个时会将链表转换成红黑树以提高查找效率。我对红黑树了解的比较少,而且之前学的二叉树相关的知识也忘了许多,所以决定近期去复习一下。 红黑树是一种平衡二叉树,平衡二叉树又属于二叉搜索树(二叉排序树)。这几天我就从二叉搜索树开始,把这几种数据结构都用java实现了一遍,二叉排序树比较简单没...

2019-04-26 13:29:14 223

原创 ArrayList 快速失败(fail-fast)机制实现原理 源码解析

最近在看ArrayList源码,看到过程中我注意到在add或者remove元素时都会让modCount这个变量自增。从变量名字看,这应该是用来记录ArrayList的修改次数的,可是记录修改次数有什么用? 于是我去问朋友(他最近也在看ArrayList源码): 我:用猫的康特这个变量记录修改次数有什么用? 朋友:ArrayList的快速失败机制啊,你忘了吗? 我:额(一脸懵逼)。。。。。。我好像真...

2019-04-09 17:01:11 1399

原创 HashMap中tableSizeFor方法源码解析

简单讲一下HashMap中的tableSizeFor()方法的源码,在看源码之前要先知道HashMap的一些特性,例如:HashMap的容量只能是2的幂,最大容量是1<<30 tableSizeFor()的作用是,在HashMap进行给定初始容量的初始化时,将传入的参数(初始容量)修改为2的n次幂,以此来保证HashMap的容量只会是2的幂。也就是说如果传入的参数为x...

2019-03-17 20:50:03 436 1

原创 HashMap中resize()方法源码详解(一)

HashMap中的resize()方法作用是初始化或者加倍容量,方法内部会自动判断当前进行的是初始化还是扩容操作。 扩容操作是通过“新建一个hash表,然后将旧表中的内容重新散列复制到新表中”这种方式实现的。 源码中大概可以分为两部分: 第一部分主要用于判断当前操作的类型(初始化or扩容)并且计算出新生成的表的容量和阈值。 第二部分只用于扩容操作时,将旧表中的元素重新散列放入新表...

2019-03-03 19:25:55 692 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除