![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java-jdk源码学习
缘之妙不可言
java
展开
-
java-Set集合源码学习
Set集合Set注重独一无二的性质,该体系集合用于存储无序(存入和取出的顺序不一定相同)元素, 值不能重复。对象的相等性本质是对象hashCode值(java 是依据对象的内存地址计算出的此序号)判断的,如果想要让两个不同的对象视为相等的,就必须覆盖Object的hashCode方法和equals方法。实现类有:HashSet,(一张hash表)哈希表边存放的是哈希值。HashSet 存储元素的顺序并不是按照存入时的顺序(和List显然不同)而是按照哈希值来存的所以取数据也是按照哈希值取得。元原创 2020-06-18 08:53:20 · 245 阅读 · 1 评论 -
java-HashMap源码学习
阅读提示:HashMap源码在不同版本情况下,具体源码可能不一样(优化问题),但功能几乎是相同的(博主1.8)什么是Hash?hash表是一种数据结构,它拥有惊人的效率,它的时间复杂度低到接近O(1)这样的常数级。hash表的实现主要是:1.计算存储位置的hash函数。2.处理哈希冲突的方法。3.hash的物理存储。hash函数:它的目的是通过一个key选出(映射)一个唯一的存储地址。最常见的hash函数:f(key)=a*key+b这里a,b为常数(不为0),f(key)就是计算出的哈原创 2020-06-17 23:12:16 · 303 阅读 · 0 评论 -
java-List集合的源码分析(数据结构方面,源码注释方面),迭代器快速失败机制
List实现了Collection接口,产生三个子类:ArrayList,LinkedList,Vector文章包含解释方面:数据结构方面,源码注释方面&迭代器快速失败机制方面1—基于源码的数据结构基于源码的数据结构,我们先给出如下比较结果:ArrayList&Vector是基于数组的实现。那么他们:-基于数组下标的快速查找功能-数据插入费力,因为要移动一大段数据为新数据提供插入位-数组可能溢出(已经被开发者利用grow()扩容解决)必须是一片连续内存空间注解原创 2020-06-15 00:12:00 · 268 阅读 · 0 评论