![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
小白 乌
这个作者很懒,什么都没留下…
展开
-
从源码看LinkedHashMap
文章目录前言源码Entry结点类和部分属性put操作get操作containsValue操作总结 前言 在阅读这篇文章之前,我们应该已经了解了 HashMap 的底层实现。 HashMap 是一个存储键值对的集合,jdk1.8 中底层的数据结构有数组+链表+红黑树,对于 get 、 put 操作,时间复杂度是O(1)的,是不是很优秀? 但是, HashMap 插入元素之后,对它进行遍历,遍历的结点顺序是无序的,如果我们希望遍历的顺序是可预测的呢?这时, LinkedHashMap 闪亮登场! 从 L原创 2020-06-01 19:51:39 · 151 阅读 · 0 评论 -
HashMap(二)
文章目录内部红黑树结点类属性内部方法左旋右旋插入后平衡操作树的分裂将链表转换为树将树转换为链表红黑树插入链表树形化参考 这篇文章主要关注HashMap中有关红黑树的相关操作。 内部红黑树结点类 属性 static final class TreeNode<K,V> extends LinkedHashMap.Entry<K,V> { TreeNode<K,V> parent; // 指向父结点的指针 red-black tree原创 2020-05-17 10:30:09 · 193 阅读 · 0 评论 -
HashMap(一)
文章目录属性构造函数1. 带初始容量和加载因子的构造器2.其它构造器hash函数(扰动函数)put操作get操作resize操作1.调用resize的两种情况2. resize方法的逻辑3.resize处理链表部分源码 这篇文章主要关注的是jdk1.8中HashMap的实现。 HashMap是一个存储键值对的集合,它是线程不安全的,允许键值是null,底层的数据结构有数组+链表+红黑树。 属性 静态属性 //序列化版本UID private static final long ser原创 2020-05-17 10:28:56 · 231 阅读 · 0 评论 -
ArrayList
文章目录类图属性构造方法1.带初始容量的构造方法2.无参构造方法3.带一个集合参数的构造方法插入方法1.在尾部添加一个元素2.在指定位置添加元素3.添加元素用到的私有方法扩容方法删除方法1.删除指定下标的元素2.删除指定元素3.删除元素用到的私有方法查找方法1.查找指定元素的位置2.查找指定位置的元素序列化方法1.序列化2.反序列化克隆方法迭代器1.创建迭代器方法2.Itr类的属性3.Itr类的next方法和hasNext方法4.Itr类的remove方法 类图 实现了RandomAccess接口,可以原创 2020-05-17 10:26:06 · 211 阅读 · 0 评论