
数据结构
文章平均质量分 55
Daisytheboy
黛西男孩
展开
-
【回炉重造】HashMap源码分析
参考链接: https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/collection/HashMap.md https://thinkwon.blog.youkuaiyun.com/article/details/104588551 数据结构实现: <=JDK1.7:数组+链表(链表散列) >=JDK1.8:数组+链表+红黑树 哈希函数比较: JDK1.7: 4次位运算,5次异或运算(9次扰动) static int原创 2020-10-14 20:23:19 · 169 阅读 · 0 评论 -
【数据结构】CopyOnWriteArrayList源码分析
参考链接 https://blog.youkuaiyun.com/u010002184/article/details/90452918 JDK文档中英对照 英文: public class CopyOnWriteArrayList extends Object implements List, RandomAccess, Cloneable, Serializable . A thread-safe variant of ArrayList in which all mutative operations (add原创 2023-10-08 17:30:13 · 86 阅读 · 1 评论 -
【数据结构】TreeMap源码分析
TreeMap的基本操作 containsKey、get、put 和 remove 的时间复杂度是 log(n)。平衡二叉树:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。继承的类和接口都是老熟人了,就是这个NavigableMap有点陌生,我们就来康康。底层数据结构:红黑树(是一种平衡二叉树,也是一种二叉搜索树)查找、插入、删除复杂度均为log(n)原创 2023-10-08 17:29:59 · 73 阅读 · 1 评论 -
【回炉重造】ArrayList源码分析
容量 默认容量:10 扩容后的容量:旧容量的的1.5倍(也可能是1.5倍-1,因为新容量=旧容量+旧容量右移一位()) 底层数据结构 Object类型数组 复杂度分析 get(int index):O(1) add(E e):O(1) add(int index, E element):O(n) remove(int index):O(n) 扩容机制 新容量为旧容量的1.5倍,或1.5倍-1。 由于底层是使用了Object类型数组,所以扩容后这个数组的大小为原来的1.5倍,但是其size取决于你到底添加了多原创 2020-10-14 20:24:35 · 136 阅读 · 0 评论 -
【回炉重造】LinkedList源码分析
底层数据结构 Node节点连成的双向链表 private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.next原创 2020-10-14 20:25:10 · 140 阅读 · 0 评论 -
【回炉重造】ConcurrentHashMap源码分析
继承关系 继承了AbstractMap抽象类和ConcurrentMap接口 线程安全性 线程安全的 JDK1.7里容器有多把锁,每一把锁锁一段数据(segement数组,加上HashEntry单向队列table) JDK1.8版本: ①取消segments字段,直接采用transient volatile HashEntry<K,V>[] table保存数据,采用table数组元素作为锁,从而实现了对每一行数据进行加锁,并发控制使用Synchronized和CAS来操作 将原先table数组+原创 2020-10-14 20:25:52 · 283 阅读 · 0 评论 -
【回炉重造】Hashtable源码分析
参考博文:https://blog.youkuaiyun.com/dingjianmin/article/details/79774192 继承关系 继承了Dictionary抽象类 参数: 大小:count 容量:默认11(>=1的任何整数) 负载因子:0.75 扩容阈值:容量*负载因子(或是两倍的同映射Map的size) 数据结构实现: 数组(一个Entry类型的Table) Entry<K,V> implements Map.Entry<K,V> 线程安全性 线程安全 插入过程原创 2020-10-14 20:26:32 · 254 阅读 · 0 评论 -
【数据结构】HashSet源码分析
HashSet源码分析原创 2023-07-31 17:23:46 · 221 阅读 · 1 评论