From e7ed4c21cf2d7e591cd3bc846f10d189e3c0450c Mon Sep 17 00:00:00 2001 From: oldx-admin <974751082@qq.com> Date: Mon, 20 Apr 2020 11:23:51 +0800 Subject: [PATCH] =?UTF-8?q?Update=20=E4=BA=8C=E3=80=81=E9=9B=86=E5=90=88?= =?UTF-8?q?=E6=A1=86=E6=9E=B6.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加HashMap为什么要树化 --- ...1\351\233\206\345\220\210\346\241\206\346\236\266.md" | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git "a/file/\344\272\214\343\200\201\351\233\206\345\220\210\346\241\206\346\236\266.md" "b/file/\344\272\214\343\200\201\351\233\206\345\220\210\346\241\206\346\236\266.md" index 19c5768..4d32b3b 100644 --- "a/file/\344\272\214\343\200\201\351\233\206\345\220\210\346\241\206\346\236\266.md" +++ "b/file/\344\272\214\343\200\201\351\233\206\345\220\210\346\241\206\346\236\266.md" @@ -68,8 +68,11 @@ - 删除引起的不平衡: 最坏情况下,平衡二叉树需要维护从被删node到root这条路径上所有node的平衡性,因此需要旋转的量级是O(logN)此,而红黑树最多只需3次旋转,只需要O(1)的复杂度。 - - **5、JDK1.8中HashMap的插入源码分析** + **6、HashMap为什么要树化?** + + - 本质上这是个安全问题。因为在元素放置过程中,如果一个对象哈希冲突,都被放置到同一个桶里,则会形成一个链表,我们知道链表查询是线性的,会严重影响存取的性能。而在现实世界,构造哈希冲突的数据并不是非常复杂的事情,恶意代码就可以利用这些数据大量与服务器端交互,导致服务器端CPU大量占用,这就构成了哈希碰撞拒绝服务攻击,国内一线互联网公司就发生过类似攻击事件。 + + **7、JDK1.8中HashMap的插入源码分析** ```java /** @@ -493,4 +496,4 @@ ## 6、总结 -最主要的核心还是 **==Lambda== 表达式**和 **==Stream API==** \ No newline at end of file +最主要的核心还是 **==Lambda== 表达式**和 **==Stream API==**