JDK源码阅读
文章平均质量分 84
Hugh_W
这个作者很懒,什么都没留下…
展开
-
JDK源码阅读—AtomicInteger
AtomicInteger是JUC中提供了原子更新操作的一个Integer类,Java中i++(--)、++(--)i、i+=x、i-=x等都不是原子操作,多线程环境下需要加锁来保证数据的正确性,而AtomicInteger可以在不加锁的前提下确保上述操作的原子性,在高并发的场景下可以比加锁有更好的性能。原创 2021-04-18 18:04:04 · 142 阅读 · 0 评论 -
JDK源码阅读—TreeMap
TreeMap 底层基于红黑树实现,可保证在`log(n)`时间复杂度内完成 containsKey、get、put 和 remove 操作,效率很高。TreeMap中元素按照键的大小进行排序,所以键需要实现Comparable接口或传入一个自定义的比较器。TreeMap非线程安全,多线程建议使用ConcurrentSkipListMap代替。原创 2021-04-11 20:27:47 · 180 阅读 · 1 评论 -
JDK源码阅读—PriorityQueue
PriorityQueue是一个优先队列的实现,每次出队都会弹出最小或最大的元素,其底层数据结构为二叉堆,使用数组存放二叉堆的元素。原创 2021-04-01 22:33:42 · 116 阅读 · 0 评论 -
JDK源码阅读—ArrayDeque
双端队列的实现一般有链表和循环数组两种,ArrayDeque就是使用循环数组实现的双端队列,其内部维护着一个数组对象,并且当数组空间不足时,会自动扩容,容量变为原来的2倍。原创 2021-03-30 21:30:00 · 171 阅读 · 0 评论 -
JDK源码阅读—IdentityHashMap
HashMap是一个散列表,储存的元素为键值对(key-value),允许空值和空键,非线程安全,不能确保内部元素的顺序。与其他Map不同,IdentityHashMap对键使用引用相等的比较(==)而不是equals,所以它可以存放多个内容相同的键,只要这些键的引用不相同。原创 2021-03-26 07:35:11 · 329 阅读 · 0 评论 -
JDK源码阅读—WeakHashMap
WeakHashMap是一个散列表,储存的元素为key-value的键值对,键和值允许为null。与其他Map不同的是,WeakHashMap储存的是key的弱引用,当key没有其他引用时,GC后key会被回收,WeakHashMap会将其对应的键值对从Map中删除,这个特性使得WeakHashMap比较适合做缓存。原创 2021-03-24 21:02:12 · 188 阅读 · 0 评论 -
JDK源码阅读—LinkedHashMap
LinkedHashMap是一个散列表,储存的元素为键值对(key-value),允许空值和空键,非线程安全,实际上它在HashMap的基础上添加了一个双向链表用于保存遍历顺序,所以LinkedHashMap是一个有序集合。原创 2021-03-21 17:48:43 · 225 阅读 · 0 评论 -
JDK源码阅读—HashMap
HashMap是一个散列表,储存的元素为键值对(key-value),允许空值和空键,非线程安全,不能确保内部元素的顺序。底层数据结构为数组+链表(红黑树)原创 2021-03-18 22:12:47 · 127 阅读 · 1 评论 -
JDK源码阅读—LinkedList
LinkedList是List接口的另一种实现,其底层数据结构为双向链表,列表头尾操作元素很快,查询因为需要对链表进行遍历,速度较慢。以下分析基于corretto-1.8.0_282版本。原创 2021-03-15 22:44:21 · 201 阅读 · 1 评论 -
JDK源码阅读—ArrayList
ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。以下分析基于corretto-1.8.0_282版本原创 2021-03-14 21:20:40 · 120 阅读 · 1 评论