
Java源码
文章平均质量分 65
Java源码学习记录
weixin_49274713
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java源码——ArrayList源码解析
ArrayList继承AbstractList,实现了List接口实现了RandomAccess接口可实现随机访问实现了Cloneable接口,并重写了clone方法,实现元素的浅拷贝实现了Serializable接口,可序列化,序列化通过自定义writeObject、readObject来实现序列化,可以减少空对象的序列化。ArrayList无参构造创建的Object数组是0长度的,第一次add时,初始化为默认长度10。原创 2023-05-30 19:36:11 · 761 阅读 · 0 评论 -
Java源码——HashMap源码解析
HashMap中容量都是2的次方,是为了方便定位hash值的索引位置,因为2的次方-1之后第一位为0,其他位都是1,然后与hash值相与,相当于是对2的n次方取余了。HashMap设置了负载因子,默认为0.75,如果超过了数组容量的0.75,则会触发扩容。负载因子的设计与hash碰撞相关,如果负载因子设置较小,则会频繁触发扩容,且空间利用率不高。如果负载因子设置较大,则会导致冲突增加,对元素的操作插入、查询都会增加性能消耗。原创 2023-06-06 10:48:06 · 329 阅读 · 0 评论 -
Java源码——HashSet源码解析
HashSet内部存储使用一个HashMap对象,数据存储在HashMap中由于存储在HashMap中,所以元素无序存储方式是元素作为key,value是一个常量的Object对象由于没有使用synchronized修饰,所以HashSet是非线程安全的。原创 2023-06-08 10:23:47 · 110 阅读 · 0 评论 -
Java源码——Hashtable源码解析
Hashtable空参构造初始容量为11Hashtable扩容策略为2*n+1,保证奇数,能够使hash更加离散是线程安全的,方法使用synchronized修饰添加元素使用头插法,因为线程安全,头插法效率高。原创 2023-06-08 11:38:55 · 606 阅读 · 0 评论