HashMap元素的顺序可以重现吗?

2024-06-28

首先,我想澄清的是,我永远不会使用 HashMap 来做需要某种数据结构顺序的事情,并且这个问题是出于我对 Java HashMap 实现的内部细节的好奇而提出的。

您可以阅读java 文档上Object http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#hashCode%28%29有关Object method hashCode.

我从那里了解到hashCode类的实现,例如String和基本类型包装器(Integer, Long,...) 一旦给出了对象包含的值,就可以预测。一个例子是调用hashCode对于任何String包含值的对象hello应该总是返回:99162322

有一个算法总是插入到空的 Java HashMap 中,其中Strings 以相同的顺序用作相同的值的键。那么,其末尾元素的顺序应该始终相同,我错了吗?

由于具体值的哈希码始终相同,因此如果不存在冲突,则顺序应该相同。 另一方面,如果存在冲突,我认为(我不知道事实)对于完全相同的输入元素,冲突解决方案应该导致相同的顺序。

那么,两个具有相同元素、以相同顺序插入的 HashMap 对象应该(通过迭代器)遍历并给出相同的元素序列,这不是正确的吗?


据我所知的顺序(假设我们将返回的元素的顺序称为“顺序”)values()迭代器)中的元素HashMap保留直到执行地图重新散列。我们可以通过提供影响该事件的概率capacity and/or loadFactor到构造函数。

然而,我们永远不应该依赖这个声明,因为内部实现HashMap不是其公共合同的一部分,并且将来可能会发生变化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HashMap元素的顺序可以重现吗? 的相关文章

随机推荐

  • Laravel 队列不作为后台运行

    你好 我创建了一个 Laravel 队列作业来发送邮件 public function handle foreach this gt emails as value to value gt email subject this gt dat
  • VB6 IIf优势

    使用是否有性能优势IIf over If 除了简单地减少代码之外 还有什么区别 If msInitialFloodSection lt gt Trim cboFloodSection Text Then mbFloodSectionChan
  • PostgreSQL 的默认用户名和密码是什么?

    我正在开发一个默认使用 PostgreSQL 的开源应用程序DBMS https en wikipedia org wiki Database Database management system 现在 当我在系统上安装它时 它的配置是 P
  • 多态与策略模式

    两者有什么区别Strategy图案和Polymorphism在Java中 我很困惑 通过策略模式实现的任何目标基本上都可以通过多态性实现 如果我在这方面错了 请纠正我 请还提供我的例子来消除我的困惑 对我来说 链接来自CKing https
  • 从 32 位 x86 汇编代码读取,计算程序有多少字节的方法是什么

    我正在做一个简单的堆栈粉碎练习 我需要在程序集中写入特定偏移量的短跳转 我需要计算两条指令分隔的字节数的偏移量 我一直在搜索谷歌 但我似乎无法找到正确的搜索词 例如 我知道mov操作码是2个字节 但是整个指令有多少字节取决于您的src an
  • 如何为移动页面创建 HTML 图像下载链接?

    我有一个包含图像的移动 html 页面 我想创建一个用于下载图像的按钮或链接 然后 图像应保存到用户的移动图像库中 我看过这个帖子 如何在 html 中创建下载链接 https stackoverflow com questions 279
  • php 连接池 mysql [重复]

    这个问题在这里已经有答案了 我打算使用MYSQL 有可用的连接池扩展吗 或者说连接的正常做法是什么 是不是到处都用这个啊 mysqli connect localhost xxx xxx test 人们正常使用吗mysql connect
  • 如何在插入后获取插入的行 ID 以及相关数据而不插入相关数据

    我有一组数据需要在表中产生新行 创建此行后 我需要将元数据附加到与此信息相关的单独表中 那就是我需要创建我的 Identity 首先 得到GlobalId从行返回 然后附加 Accounts and Metadata to it 插入数据并
  • Aptana Studio 有 NodeJS 插件吗?

    Aptana Studio 有 NodeJS 插件吗 至少对于 NodeJS 代码辅助来说是这样 也许是创建 NodeJS 项目的一种方法 以及本地NodeJS调试 目前我们没有 NodeJS 支持 如果社区对此感兴趣 那么提交功能请求并对
  • 如何在 GAE Standard Go 中缩小到 0 个实例

    我已将 Golang 应用程序部署到 Google Cloud Platform 的 App Engine 标准环境 我的 app yaml 包含以下几行 automatic scaling min idle instances 0 max
  • C# ObservableCollection OnCollectionChanged 在项目更改时不会触发

    来自 MSDN 关于 OnCollectionChanged 的 内容 在添加 删除 更改 移动项目或刷新整个列表时发生 我正在更改附加到位于我的集合中的 obj 的属性 但 OnCollectionChanged 未触发 我正在 obj
  • jTextField 仅接受字母和空格

    我希望用户只输入字母或空格 如果用户输入其他字符 我想用 jOptionPane 给出消息 我已经搜索并尝试了下面的代码 if Pattern matches a zA Z answerField1 getText JOptionPane
  • Netty 的 HashedWheelTimer 和 Quartz 的调度程序哪个更高效?

    散列轮定时器 http docs jboss org netty 3 1 api org jboss netty util HashedWheelTimer html是基于这篇 1987 年的论文 http www cs columbia
  • 如何从Python中的文件路径中提取文件夹路径?

    我只想获取文件完整路径中的文件夹路径 例如T Data DBDesign DBDesign 93 v141b mdb我想得到只是T Data DBDesign 不包括 DBDesign 93 v141b mdb 我尝试过这样的事情 exis
  • 使用 Bootstrap 折叠侧边栏

    我刚刚访问了这个页面http www elmastudio de https web archive org web 20131015001517 https www elmastudio de 并想知道是否可以使用 Bootstrap 3
  • SwiftUI 显示带有绑定变量的工作表在首次显示时不起作用

    我试图在工作表中呈现一个带有 Binding String 变量的视图 该变量仅在 TextField 中显示 绑定该变量 在我的主 ContentView 中 我有一个字符串数组 我用 ForEach 循环遍历数组的索引来显示它 并显示一
  • magento - 删除扩展名?

    我购买了 magento 扩展并将文件复制到 magento 目录中 一切都很好 然后我想重新安装它 所以我删除了app code local中的所有相关文件 并删除了相关的数据库表 当我将扩展文件重新复制回 magento 目录并尝试测试
  • 如何使用java从Excel工作表中获取特定列名(作为参数传递)的最后一个非空单元格的行索引?

    模块的摘要 获取书籍名称 工作表名称和列名称作为参数 并期望模块返回所需的行索引 public int getExcelData String WBookName String sheetName String columnName int
  • RollingFileAppender 中动态文件命名的 log4net 中的问题

    我的配置文件中有 3 个附加程序 用于创建 3 种不同类型的日志 我通过设置全局上下文属性在 3 个附加程序中的每一个中使用文件的动态命名 在某些情况下 我需要为 1 个附加程序动态设置日志文件名 当我仅为 1 个附加程序设置文件名时 除了
  • HashMap元素的顺序可以重现吗?

    首先 我想澄清的是 我永远不会使用 HashMap 来做需要某种数据结构顺序的事情 并且这个问题是出于我对 Java HashMap 实现的内部细节的好奇而提出的 您可以阅读java 文档上Object http docs oracle c