diff --git a/blogs/Java/口水话/集合源码.md b/blogs/Java/口水话/集合源码.md index 222b023..ba72351 100644 --- a/blogs/Java/口水话/集合源码.md +++ b/blogs/Java/口水话/集合源码.md @@ -4,7 +4,9 @@ #### 前言 +起初想看集合源码是因为,一次偶然的机会,一位同事跟我说 ArrayList 的初始容量为空,第一次 add 时才会扩容至 10。我当时就觉得我的知识体系有点落后了,就决定去看一遍集合源码。在看的过程中呢,可以用惊喜+收获满满来形容了。惊喜是指对于 Stack、HashSet、LinkedHashMap 等等的实现方式感觉很震惊,看完这些集合源码有种那种你感觉很难但是其实很简单的感觉,不仅如此,熟悉集合源码对实际开发也是有帮助的,主要体现在 ArrayList remove 时可能抛出的 ConcurrentModificationException、Collections 使用不当造成的 UnsupportedOperationException、ArrayMap 的缓存机制等等。 +在看集合源码时,Debug 源码有时并不直接,可以使用 OpenJDK 开源的 JOI 工具查看对象的内存布局,这对分析集合扩容、HashMap 树化非常有用。 #### 目录