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

Java-关于冲突处理和get()方法的HashMap混淆

莘聪
2023-03-14
问题内容

我正在使用a HashMap,但是get()在发生碰撞时该方法的工作原理还没有得到一个直接的答案。

假设n > 1对象放置在相同的 键中
。它们存储在LinkedList吗?它们是否被覆盖,以便仅存在该键中的最后一个对象存在?他们在使用其他碰撞方法吗?

如果将它们放在中LinkedList,是否可以检索整个列表?如果不是,是否有其他 Java 内置地图可以在其中执行?

就我的目的而言,单独的链接将是理想的,就好像有冲突一样,我需要能够浏览列表并获取有关列表中所有对象的信息。用 Java 做到这一点的最佳方法是什么?

感谢你的帮助!


问题答案:

它们是否被覆盖,以便仅存在该键中的最后一个对象存在?

是的,假设您要使用同一个键放置多个值(根据Object.equals,不是)Object.hashCode。这是在Map.putjavadoc中指定的:

如果映射先前包含键的映射,则旧值将替换为指定值。

如果要将键映射到多个值,最好使用Guava之类的东西ListMultimapArrayListMultimap具体来说就是将键映射到值列表。(公开:我为Guava做出了贡献。)如果您不能容忍第三方库,那么实际上您必须拥有一个Map<Key, List<Value>>,尽管这样做可能会有些笨拙。



 类似资料:
  • 本文向大家介绍Hash表处理冲突的方法相关面试题,主要包含被问及Hash表处理冲突的方法时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 开放定址法 为产生冲突的地址求得一个地址序列(),其中。其中m为表的长度,而增量有三种取值方法,线性探测再散列,平方探测再散列,随即探测再散列。 链地址法 将所有Hash地址相同的记录都链接在同一链表中 再Hash法 同时构造多个不同的Hash函数,当产生

  • 问题内容: Java 使用方法在中插入K / V对。可以说我使用过method,现在有一个条目,其值为10和17。 如果我在其中插入10,20,由于键10相同而发生冲突,它会简单地用该条目替换之前的条目。 如果钥匙碰撞,则用新的K / V对替换旧的K / V对。 所以我的问题是何时使用Chaining冲突解决技术? 为什么它没有形成键值为10且值为17,20的a? 问题答案: 当您插入线对然后时,

  • Java使用方法在中插入K/V对。假设我使用了方法,现在

  • 主要内容:执行 master 分支变更,出现冲突,解决冲突假设要在分支中执行更改,修改分支中的代码。添加一个计算长度的函数:,代码变化如下 - 假设验证代码后,没有问题就提交这些更改。 执行 master 分支变更 同时在分支中,另外一个开发人员()还会更改了内容,并将其更改推送到分支。 验证差异后,现在就提交更新内容。 在分支上,我们已经实现了一个函数。假设经过测试后,提交并将其更改推送到分支。 出现冲突 假设另外一个开发人员()想看看我们在分支上做了

  • 我试图用这个键得到一个值。我正在使用get()方法。我的密钥是由int和String组成的对象。所以我提出反对 我收到了空的。当我查看去bug模式或打印密钥集时,我收到类似的消息 虽然我的钥匙应该是 为什么键看起来像这样而不是以及如何使用键获取值? 我在键中覆盖了字符串methid。它看起来更好,但我仍然有空值,我相信有一些价值。

  • 我正在Java EE6平台上开发一个企业应用程序。IDE是NetBeans 7.2,应用服务器是GlassFish 3.1.2.2。 业务逻辑必须使用一个库(具体来说是HBase-RDF)来处理其核心中的一些任务。最初的HBase-RDF代码依赖于许多包,我相信GlassFish已经使用了它们的新版本。例如,我可以看到javax.xml、javax.activation、com.sun.jerse