摘要: 目录1. 是什么2. 如何使用3. 源码分析3.1. 1.构造方法3.2. 2.属性3.3. 3.其他方法4. 总结 1. 是什么 2. 如何使用 public class LinkedHashSetTest { public static void main(String[] args) { Li 阅读全文
posted @ 2025-07-02 11:52 ThinkerQAQ 阅读(12) 评论(0) 推荐(0)
摘要: 目录1. 是什么2. 如何使用3. 源码分析3.1. uml3.2. 构造方法3.3. 属性3.4. add方法3.5. contains方法3.6. remove方法4. 总结 1. 是什么 无序、不重复的集合,使用HashMap实现 2. 如何使用 public class HashSetTes 阅读全文
posted @ 2025-07-02 11:52 ThinkerQAQ 阅读(8) 评论(0) 推荐(0)
摘要: 目录1. PriorityQueue是什么2. 使用3. 源码分析3.1. 属性3.2. 有参构造3.2.1. 初始化元素到数组中3.2.2. 维护堆的属性3.2.2.1. 下沉操作3.3. 插入3.3.1. 上浮操作3.4. 删除3.4.1. 下沉操作4. 参考 1. PriorityQueue是 阅读全文
posted @ 2025-07-01 19:38 ThinkerQAQ 阅读(21) 评论(0) 推荐(0)
摘要: 目录1. 是什么2. 如何使用3. 原理分析3.1. uml3.2. 构造方法3.3. put方法3.3.1. 使用synchronized加锁3.3.2. 计算key落在entry数组中的哪个位置【或者说哪个链表】3.3.3. 遍历链表直到找到相等的节点或者到末尾3.3.4. 没有找到,新建节点加 阅读全文
posted @ 2025-07-01 09:40 ThinkerQAQ 阅读(25) 评论(0) 推荐(0)
摘要: 目录1. 是什么2. 使用3. 源码分析3.1. uml3.2. 构造方法3.3. put3.4. get3.5. containsKey3.6. remove4. 参考 1. 是什么 基于红黑树(平衡二叉搜索树)实现,效率为O(logN)的key-value对。 迭代时输出的顺序是 按照key的自 阅读全文
posted @ 2025-06-30 18:42 ThinkerQAQ 阅读(22) 评论(0) 推荐(0)
摘要: 目录1. 是什么2. 使用3. 实现3.1. uml3.2. 构造方法3.3. put3.3.1. 创建LinkedHashMap增强的节点--Entry【既是Node数组的节点又是双向链表的节点】3.3.1.1. 创建的时候就把节点插入到双向链表尾部3.3.2. put的节点(不是新插入的而是更新 阅读全文
posted @ 2025-06-30 18:41 ThinkerQAQ 阅读(167) 评论(0) 推荐(1)
摘要: 目录1. 问题1.1. 手写HashMap1.1.1. Entry1.1.2. put操作1.1.3. get操作1.1.4. remove操作1.2. 为什么构造函数中需要把capacity转成2的power1.3. 扩容操作1.3.1. 扩容的逻辑1.4. 如何解决Hash冲突的?1.5. 发生 阅读全文
posted @ 2025-06-30 11:02 ThinkerQAQ 阅读(16) 评论(0) 推荐(0)
摘要: 目录1. 是什么2. 如何使用3. 原理分析3.1. uml3.2. 构造方法3.3. put方法3.3.1. 计算key的hash值3.3.2. 第一次进来table肯定为空,那么扩容3.3.3. 使用hash值&数组长度1计算改数据存放的位置i3.3.4. 第二次进来如果位置i为空,那么用(ke 阅读全文
posted @ 2025-06-30 11:02 ThinkerQAQ 阅读(142) 评论(0) 推荐(0)
摘要: 目录1. 是什么2. 如何使用3. 源码分析3.1. synchronizedList方法3.1.1. 调用SynchronizedList的构造方法3.1.2. 初始化锁对象为当前正在构造的list3.2. 其他方法3.2.1. 使用synchronized代码块加锁3.2.2. 转而调用list 阅读全文
posted @ 2025-06-29 18:57 ThinkerQAQ 阅读(12) 评论(0) 推荐(0)
摘要: 目录1. 是什么2. 如何使用3. 源码分析3.1. uml3.2. 构造方法3.3. add方法3.3.1. 加了synchronized保证线程安全3.3.2. 根据情况进行扩容并迁移旧的数组3.3.3. 插入到数组末尾3.4. remove方法【根据下标删除】3.4.1. 加了synchron 阅读全文
posted @ 2025-06-29 18:56 ThinkerQAQ 阅读(9) 评论(0) 推荐(0)