HashMap
文章平均质量分 92
养歌
任何傻瓜都能写出计算机可以理解的代码,好的程序员能写出人能读懂的代码。
展开
-
面试官:为什么有了平衡二叉树,还要选择红黑树这种数据结构?
首先讲解为什么要使用红黑树之前,有必要先了解二叉查找树和平衡二叉树,然后继续介绍红黑树,带着这个问题,让我们一起来学习今天的内容吧。二叉查找树二叉查找树的特点就是左子树的节点值比父亲节点小,而右子树的节点值比父亲节点大,如下图:二叉查找树中对于目标节点的查找过程类似于有序数组的二分查找,快速找到某个节点。n 个节点的二叉查找树,正常的情况下,查找的时间复杂度为 O(logn)。为什么说是正常的情况下呢?是因为二叉查找树有一种极端的存在,二叉树的大部分子节点都比父节点值小,然后导致所有的数据偏向左原创 2022-01-27 10:45:22 · 1742 阅读 · 0 评论 -
为什么重写 equals 方法后还需要重写 hashCode 方法
下面我们先看 一下 Object 类的 equals 方法和 hashcode 方法源码: public native int hashCode(); public boolean equals(Object obj) { return (this == obj); }从代码中我们知道,创建的对象在不重写的情况下使用的是 Object 的 equals 方法和 hashcode 方法,从 Object 类的源码我们知道,默认的 equals 判断的是两个对象的引用指向原创 2022-01-24 16:29:38 · 596 阅读 · 0 评论 -
HashMap 面试题 11 问,看这篇就够了
1、请你说说 HashMap 的数据结构有什么区别?jdk1.7 采用的是数组 + 链表结构:在 jdk1.8 采用数组 + 链表 + 红黑树的结构:2、上面说到 jdk1.8 之后增加了红黑树,什么 情况下转红黑树,什么情况下又转链表的?1、当链表的长度达到 8 ,并且数组长度是否达到 64。如果达到 64,则进行链表转红黑树的操作。否则,只是发生一次 resize,散列表扩容,还有种情况,当数组很小,但是链表过长,首先扩容数组,而不是转换树。2、当树中的元素经过删除或者其他原因调整了大小,原创 2022-01-13 12:00:51 · 5208 阅读 · 8 评论 -
HashMap线程不安全最简单易懂的一遍文章
前言关于HashMap一直是面试当中必问的经典话题,我们不能只为用而用,关于底层的原理,可能出现的问题也要清楚才行,网上有关于HashMap线程安全的讲解也多的是,我为什么要讲这篇文章?因为我想更简单明了一点,经过我自己的理解写的这篇文章带给你的清晰和完整性比大部分的文章更加的明了。我们都知道HashMap是通过拉链法来解决哈希冲突的,在哈希冲突时,相同哈希值的键值对会通过链表的方式存入数据。而且都知道HashMap是线程不安全的,在多线程环境下是不建议使用HashMap的,那到底线程不安全主要体现在原创 2021-11-17 13:25:06 · 1048 阅读 · 0 评论