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

java HashMap如何链接?如何访问所有碰撞值?

韶景曜
2023-03-14
问题内容

我读过某个地方,HashMap使用链接来解决冲突。但是如果是这样的话。我如何才能访问具有相同键值的所有元素。

例如 :

HashMap<Integer, String> hmap = new HashMap<Integer, String>();
hmap.put(1, "1st value");
hmap.put(1, "2nd value");
hmap.put(1, "3rd value");
hmap.put(1, "4th value");

现在,如果我执行hmap.get(1),它将返回“ 4th Value”

如果确实确实像

关键值1“第四值” —>“第三值” —>“第二值” ---->“第一值”

我如何获得其他值?

hmap.get(1) 仅返回第一个值。

我的第二个问题是

如果执行线性链接。如何删除密钥的任何一个值。假设我想从哈希图中删除“第4个值”,并希望保留同一键的所有其他值,我该怎么做?

如果我做

hmap.remove(1);

,它将删除完整的链。


问题答案:

HashMap 不能为同一个键存储多个值。

链接用于解决哈希冲突,即不同密钥具有相同哈希的情况。因此,这不是关于使用同一键存储多个值,而是关于其键具有相同哈希值的多个值。

可以为同一键存储多个值的数据结构称为多图。不幸的是,JRE中没有内置的multimap实现。

如果您需要多图,则可以维护的Mapof List(如matsev建议),或使用第三方库(例如Google Guava)中现有的多图实现。

也可以看看:

  • 碰撞分辨率


 类似资料:
  • 问题内容: 您好,我已经仔细阅读了文档,无法弄清楚如何在场景工具包中设置碰撞检测。可以请一个例子。请帮我,我非常渴望解决这个问题。谢谢! 编辑:您好,非常感谢,对不起,我忘了提及我的项目进展迅速。没什么大不了的,我大部分时间都可以自我翻译。 当对象碰撞并相互反弹时,我使BitMasks正常工作。但是我似乎无法使该功能正常工作 查看文档,看来我需要以某种方式将场景物理世界委托分配给该方法。我不确定该

  • 问题内容: 我正在尝试访问所有显示的URL,但它首先访问的不是全部 Google搜索网址https://www.google.co.uk/search?q=Rashmi&oq=Rashmi&aqs=chrome..69i57j69i60l3.6857j0j1&sourceid=chrome&ie=UTF-8#q=Rashmi+Custom+Tailors 问题答案: 您的问题是使用以下方法导致的

  • 我很难理解colliderect如何与精灵一起工作。我有一个很好的想法,但每当我尝试在游戏中实现它时,我只会收到错误消息“attributeError:'pygame.surface'对象没有属性'rect'” 基本上我所有的精灵都能工作(不包括ufo1),但是当我创建一个ufo1精灵的时候,它就崩溃了,我不知道如何修复它。 提前感谢。

  • 所以我在为我的平台游戏编写攻击方法时,我注意到我的游戏中的碰撞行为很奇怪,当我向敌人发起攻击(我的游戏中的火球)时没有损坏的记录,我添加了一个打印声明来检查他们是否失去任何生命值和没有记录,但是当我按住攻击方法(这是空格键)时,敌人上记录了多个攻击。 玩家角色是蓝色的,敌人是绿色的。 控制台显示敌人的生命值下降,但仅当空格键被按住时。 同样,当我走进敌人的精灵时,我点击一次空格键,我也能以这种方式

  • 我想做一个像相册一样的lib改编成Android Q 由于范围存储,不推荐使用; 我们不能直接通过这样的路径读取文件 没有URI之类的值,因此我无法通过ContentProvider获取图片。 我们可以通过这种方式只打开一个图片(下面的代码),并且在回调中接收到一个URI; 但是我想访问所有的图片,那么,我如何扫描所有的图片在Android Q?

  • 我在我的自上而下的游戏中实现了一个简单的基于瓷砖的碰撞系统,但是我在跨角移动方面遇到了问题。目前,我的程序采取了玩家的中心点,并在一个20px的正方形网格(交替的灰色背景)上做出一个瓷砖。它检查上、下、左、右贴图是否有冲突,如果找到冲突,它就进入下一个阶段。 下一个阶段是检查玩家在瓷砖内的位置。为此,我有一个名为的函数(我知道有创意的名字)。这将返回从瓷砖的中心点到玩家的中心点的距离的向量2i(x