Java HashMap 数组大小

2024-02-24

我正在阅读Java 8 HashMap的实现细节,谁能告诉我为什么Java HashMap初始数组大小具体是16? 16岁有什么特别之处?为什么总是两个人的力量?谢谢


2 的幂之所以到处出现,是因为当用二进制表示数字时(就像在电路中一样),2 的幂的某些数学运算执行起来更简单、更快(只要想想 10 的幂的数学运算是多么容易)我们使用十进制)。例如,乘法在计算机中并不是一个非常有效的过程 - 电路使用的方法类似于将两个数字与多个数字相乘时所使用的方法。乘以或除以 2 的幂需要计算机将位向左移动以进行乘法或向右移动以进行除法。

至于为什么HashMap是16呢? 10 是动态增长结构(任意选择)的常用默认值,16 也相差不远 - 但它是 2 的幂。

您可以非常有效地计算 2 的幂的模数。n % d = n & (d-1)当 d 是 2 的幂时,模数用于确定项目映射到内部数组中的哪个索引 - 这意味着它在 Java HashMap 中经常出现。模数需要除法,这也比使用除法效率低得多bitwise and操作员。您可以通过阅读一本有关数字逻辑的书来说服自己这一点。

之所以bitwise and对于 2 的幂以这种方式工作是因为 2 的每个幂都表示为设置为 1 的单个位。假设该位是 t。当你从 2 的幂中减去 1 时,你将 t 以下的每一位设置为 1,将 t(以及 t)以上的每一位设置为 0。Bitwise and因此保存数字n中位置t以下的所有位的值(如上所述),并将其余的设置为0。

但这对我们有什么帮助呢?请记住,除以 10 的幂时,您可以计算 1 后面的 0 的数量,并从被除数的最低有效位开始获取该位数,以便找到余数。示例:637989 % 1000 = 989。类似的属性适用于只有一位设置为 1,其余设置为 0 的二进制数。示例:100101 % 001000 = 000101

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

Java HashMap 数组大小 的相关文章

  • Junit:如何测试从属性文件读取属性的方法

    嗨 我有课ReadProperty其中有一个方法ReadPropertyFile返回类型的Myclass从属性文件读取参数值并返回Myclass目的 我需要帮助来测试ReadPropertyFile方法与JUnit 如果可能的话使用模拟文件
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • Spring AspectJ 在双代理接口时失败:无法生成类的 CGLIB 子类

    我正在使用Spring的
  • 如何在java中将一个数组列表替换为另一个不同大小的数组列表

    我有两个大小不同的数组列表 如何从此替换 ArrayList
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 如何在 Spring 中禁用使用 @Component 注释创建 bean?

    我的项目中有一些用于重构逻辑的通用接口 它看起来大约是这样的 public interface RefactorAwareEntryPoint default boolean doRefactor if EventLogService wa
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • 内部类的构造函数引用在运行时失败并出现VerifyError

    我正在使用 lambda 为内部类构造函数创建供应商ctx gt new SpectatorSwitcher ctx IntelliJ建议我将其更改为SpectatorSwitcher new反而 SpectatorSwitcher 是我正
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 如何在用户行走时跟踪 GPS 坐标,来自 iOS 平台的 xamarin.forms

    我刚刚经历过这个link http developer xamarin com recipes ios multitasking track significant location change 当用户使用 xamarin forms 应
  • 在 JPanel 或 JLabel 中调整图像大小并显示,而不会损失质量

    我正在开发一个java程序来使用网络摄像头在注册时捕获员工图像 我可以毫无问题地获取图片 并将其保存在我的 C 驱动器中 但在检索图像时 标签上仅显示图像的一部分 有没有办法在保存之前调整 JPEG 的大小 或者在显示之前 就像在不损失质量
  • Clojure:跨列表的复杂迭代?

    我想要一个数字 20 和一个清单 1 2 3 4 5 6 7 8 9 10 并返回一个集合 其中原始列表中的每个值包含两个值 原始值与该值除 20 时的余数配对 如果原始值以某种方式与余数相关 那就太好了 这样我就可以轻松检索产生特定余数的
  • 从 directshow 获取 iplImage 或 Mat 到 opencv

    由于使用 c 和 opencv 时很难更改相机的分辨率 因此我不得不将我的眼动追踪软件改用 directshow Directshow 对我来说很陌生 很难理解所有内容 但我发现这个很好的例子非常适合捕获和查看网络摄像头 http www
  • JVisualVM 内存采样:不支持远程应用程序

    我正在尝试在 Red Hat Linux 中使用 JVisualVM 监视远程 tomcat 进程 CPU 采样工作正常 但内存采样选项卡被禁用 它说 内存采样 不可用 不支持远程应用程序 进程的命令行参数 Djavac source 1
  • 如何在 aspx 页面中包含 adovbs.inc 文件?

    我正在将 ASP 经典页面转换为 ASP NET 将扩展名为 inc 的文件包含到 aspx 页面的正确方法是什么 我注意到 每次我将包含指向 inc 文件的 include 指令的页面之一更改为 aspx 时 我都会从这些 inc 文件中
  • 如何在 C++ 中跟踪 BFS 深度

    我想对二维数组进行BFS 每个单元格可以表示为pair
  • PHP bcompiler 编码的代码有多安全?

    我很感兴趣是否有人确切知道 PHP 的有效性 安全性 受保护程度b编译器 http www php net manual en intro bcompiler php反对逆向工程 简介页面做出了大胆的声明 在代码保护方面 可以肯定地说 如果
  • 如何在受 AWS Linux AMI 限制的情况下,将 SoX 二进制文件打包为 NodeJS AWS Lambda 函数的 MP3 支持?

    过去三个月我一直在研究这个问题 但完全陷入困境 我正在尝试打包我的 NodeJS AWS Lambda 函数 该函数将使用SoX http sox sourceforge net以及将音频文件转换为 MP3 的依赖项 我可以按照引用的说明让
  • Grails 2.3.7 删除 itext 2.0.8 jar

    我尝试将应用程序从 grails 2 2 4 更新到 2 3 7 但 iText 依赖项存在问题 执行 grails 资源依赖项显示我有 2 个用于 iText 的 jar org grails grails docs 2 3 7 org
  • 如何读取haskell类型签名?

    所以我把这个声明放在我的ghci上 jkl x f y f map y x 我把这个放回去了 jkl Num b gt b gt b gt t gt b gt t 但当我读到它时我很困惑 根据我的理解 jkl 是 num 类型 它采用 b
  • 如何用 gulp-rev 的输出替换 index.html 中列出的文件名?

    我在用着gulp rev https www npmjs org package gulp rev 构建我可以设置的静态文件永不过期 http developer yahoo com performance rules html expir
  • 使用服务帐户访问 Google Analytics API

    我可以使用客户端应用程序中的服务帐户访问 Google Analytics 数据吗 如果没有 是否有其他方法可以达到相同的结果 必须完全是客户端的 并且不能要求用户进行身份验证 因此需要使用服务帐户 是的 你可以在https code go
  • 用于 DOM 的 Gecko API

    Gecko 是否公开了直接使用其 DOM 的 API 我正在寻找像 HtmlElement 这样的类 可用于构建 遍历 HTML 内容树 我正在尝试将 Gecko 作为桌面应用程序中的 Web 浏览器控件托管 并且更喜欢直接 API 而不是
  • NuGet Pack:忽略默认包含

    这与我通常读到的问题相反 即人们试图获取 NuGet 包中包含的文件 我试图stop文件被自动包含 我正在创建一个预编译的 MVC 视图模板库 使用 RazorGenerator Mvc less文件和 JavaScript 来根据需要支持
  • 如何为 Flutter 中禁用的文本表单字段标签设置颜色主题?

    我想在我的 Flutter 应用程序中禁用文本字段的标签上应用一个主题 因为我现在的灰色很难阅读 我想将其应用到我的整个应用程序 所以我想使用主题 但是 我没有找到任何解决方案可以让我自定义标签的文本样式仅当文本表单字段被禁用时 如何在 F
  • Thunderbird 议程本机系统通知? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 几周来我一直在寻找这个问题的答案 我想我可能会直接问这个问题 我在 Windows 10 上使用 Thunderbird 102 6
  • 使用 PHP 5.5 在 Amazon EC2 上安装 pdo_mysql

    我创建了一个 Amazon Linux AMI 2013 09 02 服务器并安装了以下内容 yum install php55 php55 mbstring php55 soap php55 gd php55 mcrypt php55 p
  • 在 Procfile 中启动多个工作进程(开发环境与 Heroku)

    我有一个简单的 Procfile 内容如下 web bundle exec rails server thin p PORT worker bundle exec rake jobs work 在 Heroku 上 这将启动 N 个工作任务
  • Java HashMap 数组大小

    我正在阅读Java 8 HashMap的实现细节 谁能告诉我为什么Java HashMap初始数组大小具体是16 16岁有什么特别之处 为什么总是两个人的力量 谢谢 2 的幂之所以到处出现 是因为当用二进制表示数字时 就像在电路中一样 2