当前位置: 首页 > 面试题库 >

HashMap put()和get()方法如何工作的内部原理(仅基本逻辑)

鲜于念
2023-03-14
问题内容

HashMap使用put()方法将一个键实例说“ key”而一个Value实例说“
value”时,HashMap该类在内部做了什么。当我们说时,它如何取回值hashMap.get(key)

编辑 :我在这里不需要细节,基本上是想了解更大的图景equals()以及hashcode()方法put()get()操作中的作用。


问题答案:

如果您谈谈更高的画面就如同below.Here我指项目作为keyMap

同时放置物品。

  1. 计算hashcode密钥
  2. 如果baskethashcode存在,则使用equals该密钥的方法查询的密钥I的篮子,以确定该元件将被添加或替换。
  3. 如果不存在,则创建新的购物篮(重新哈希处理)并将该元素添加到其中。

得到:

  1. 获取hashcode密钥
  2. 去那个篮子
  3. 重复使用equals键将使您从该篮子中返回该元素。


 类似资料:
  • 我知道Spark可以使用Scala、Python和Java来操作。另外,RDDs用于存储数据。 但是请解释一下,Spark的架构是什么,内部是如何工作的。

  • 匿名类保存对封闭类的引用。 在下面的示例中,我创建了一个小活动。在onCreate方法中,我只需在另一个线程上添加一个计时器,添加一个CompositeDisposable并在onDestroy中清除它。 显然,如果没有CompositeDisposable,它将导致内存泄漏。使用CompositeDisposable不会造成任何内存泄漏,但它是如何工作的? RxJava只是中断Thread并在每

  • 环境:jdk18 前言 今天在看Java string类的equals源码,源码主要逻辑比较好理解:先判断是否是同一对象,是就直接返回true,否则判断类型是否是string类型,且每一个元素内容是否相同(先判断length,再判断内容) 问题描述 在使用断点debug时发现 问题1: 是循环运行的,且有的时候value与aString.value的数组长度就不一样(哪怕字符相等,如"a".equ

  • 问题内容: 我们知道,主要的内存域很少:Young,Tenured(Old gen)和PermGen。 年轻领域分为伊甸园和幸存者(两个)。 OldGen用于保留对象。 MaxTenuringThreshold可以防止将对象最终过早地复制到OldGen空间。这很清楚而且可以理解。 但是它如何工作?垃圾收集器如何处理这些仍存活到MaxTenuringThreshold的对象,并且以什么方式处理?他们

  • 在Java8中,当我们使用stream.map和flat map方法时?我对用例有点困惑。请给出使用这两种方法的一些场景。

  • 我正在做Java类练习。我有一段代码,其中包含一个重载方法: 主要: 当我在main中调用方法时,我预计会出现错误,但它调用方法而我的是一个数字,它的大小大于的大小(8字节/4字节)所以我想知道这些原始类型是如何工作的?