![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jdk
文章平均质量分 88
NeverOW
这个作者很懒,什么都没留下…
展开
-
Vector源码解析
Vector源码解析继承接口继承了 AbstractList 类,这个类也实现了 List 方法实现了 Serializable ,能进行序列化操作实现了 Cloneable 接口,能够使用 clone() 方法实现了RandomAccess,说明 Vector 也支持随机访问,在 Vector 中,可以通过元素的索引快速获取元素对象,这就是快速随机访问。成员变量 // 存储数据的数组,此数组的容量一般大于实际长度,后续未填充数据用 null 替代 protected Object[]原创 2021-11-08 21:36:36 · 322 阅读 · 0 评论 -
HashTable源码解析
HashTable属性成员 //hash表数组 private transient Entry<?,?>[] table; //元素个数 private transient int count; //扩容阈值 private int threshold; //负载因子 private float loadFactor; //改动次数 private transient int modCount = 0;原创 2021-11-08 18:19:18 · 361 阅读 · 0 评论 -
ConcurrentHashMap -1.7 源码解析
简介ConcurrentHashMap是Java1.5中引用的使用了分段锁机制的一个线程安全的支持高并发的HashMap集合类简而言之,ConcurrentHashMap在对象中保存了一个Segment数组,即将整个Hash表划分为多个分段;而每个Segment元素,即每个分段则类似于一个Hashtable;这样,在执行put操作时首先根据hash算法定位到元素属于哪个Segment,然后对该Segment加锁即可。因此,ConcurrentHashMap在多线程并发编程中可是实现多线程put操作。原创 2021-11-08 15:52:27 · 580 阅读 · 0 评论 -
ConcurrentHashMap -1.8 源码解析
ConcurrentHashMap -1.8 源码解析加锁机制在JDK1.7之前,ConcurrentHashMap是通过分段锁机制来实现的,所以其最大并发度受Segment的个数限制。因此,在JDK1.8中,ConcurrentHashMap的实现原理摒弃了这种设计,而是选择了与HashMap类似的数组+链表+红黑树的方式实现,而加锁则采用CAS和synchronized实现。存储结构Java8 的 ConcurrentHashMap 相对于 Java7 来说变化比较大,从1.7的 Segment原创 2021-11-08 15:48:18 · 3636 阅读 · 3 评论 -
HashSet源码解析1.8
HashSet源码解析简介HashSet 是线程不安全的的,继承的 set 接口,所以里面的元素是不能重复的,无序的,允许包含值为null的元素,但最多只能有一个null元素。很多内部实现是基于 HashMap 的,可以看成是一个 HashMap 的简单封装继承接口HashSet 继承了 AbstractSet 类,这个类也实现了 Set 方法HashSet 实现了 Serializable ,能进行序列化操作HashSet 实现了Set 接口,能够实现其中的 Set 集合中的一些操作Has原创 2021-11-08 15:44:15 · 250 阅读 · 0 评论 -
HashMap- 1.7源码解析
HashMap- 1.7源码解析存储结构内部包含了一个 Entry 类型的数组 table。Entry 存储着键值对。它包含了四个字段,从 next 字段我们可以看出 Entry 是一个链表。即数组中的每个位置被当成一个桶,一个桶存放一个链表。HashMap 使用拉链法来解决冲突,同一个链表中存放哈希值和散列桶容量取模运算结果相同的 Entry。啊啊transient Entry[] table; //位桶数组/** * Entry类实现了Map.Entry接口 * 即 实现了get原创 2021-11-06 17:03:49 · 564 阅读 · 1 评论 -
HashMap JDK8源码解析
HashMap -1.8 源码解析简介:HashMap 主要用来存放键值对,它基于哈希表的 Map 接口实现,是常用的 Java 集合之一,是非线程安全的。HashMap 可以存储 null 的 key 和 value,但 null 作为键只能有一个,null 作为值可以有多个JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突)。 JDK1.8 以后的 HashMap 在解决哈希冲突时有了较大的变化,原创 2021-11-05 15:01:48 · 283 阅读 · 0 评论 -
LinkedList源码解析
LinkedList源码解析底层数据结构LinkedList底层通过双向链表实现,双向链表的每个节点用内部类Node表示。LinkedList通过first和last引用分别指向链表的第一个和最后一个元素,当链表为空的时候first和last都指向null。内部结构分析: private static class Node<E> { E item;//结点值 Node<E> next; //后继结点 Node<E>原创 2021-11-02 20:24:45 · 147 阅读 · 0 评论 -
JavaArrayList源码解析
ArrayList源码解析实现接口:List集合接口设置了一些List的公共方法,继承了CollectionRandomAccess标记接口RandomAccess: 是一个标志接口,表明实现这个这个接口的 List 集合是支持快速随机访问的。也就是说,实现了这个接口的集合是支持快速随机访问策略的。Cloneable标记接口Cloneable:是一个标记接口,按照约定,实现Cloneable的类应当重写Object.clone()方法,但是此接口不包含clone方法,在不实现Clo原创 2021-11-01 19:06:17 · 179 阅读 · 0 评论