From 617a5aede01e6a6a6ecc051835598bf258aca4d8 Mon Sep 17 00:00:00 2001 From: Omooo <869759698@qq.com> Date: Tue, 16 Jun 2020 19:52:26 +0800 Subject: [PATCH] =?UTF-8?q?Update=20=E9=9B=86=E5=90=88=E6=BA=90=E7=A0=81.m?= =?UTF-8?q?d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blogs/Java/口水话/集合源码.md | 2 ++ 1 file changed, 2 insertions(+) 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 树化非常有用。 #### 目录