在 HashMap文档中,提到:

>初始容量只是创建哈希表时的容量
> capacity是哈希表中的桶数.

现在假设我们的初始容量为16(默认值),如果我们继续添加100个元素,则hashmap的容量为100 * loadfactor.

散列桶的数量是100还是16?

编辑:
从我读到的解决方案:桶不仅仅是添加的元素.
以此为观点:因此,如果我们将字符串添加为键,我们将获得一个元素/存储桶,从而导致大量空间消耗/复杂性,我的理解是正确的吗?

解决方法

既不是100也不是16桶.最有可能会有256个存储桶,但文档无法保证这一点.

从updated documentation link:

The load factor is a measure of how full the hash table is allowed to get before its capacity is automatically increased. When the number of entries in the hash table exceeds the product of the load factor and the current capacity,the hash table is rehashed (that is,internal data structures are rebuilt) so that the hash table has approximately twice the number of buckets.

(强调我的)

因此,如果我们忽略上面的“大约”一词,我们确定每当哈希表变为75%满(或者在构造函数中指定的任何加载因子)时,哈希桶的数量加倍.这意味着每当插入第12,24,48和96个元素时,桶的数量就会翻倍,总共会有256个桶.

但是,正如我在文档片段中强调的那样,这个数字大约是之前大小的两倍,所以它可能不是256.事实上,如果倒数第二次加倍被稍微大一点的加倍所取代,那么最后的加倍可能是永远不会发生,所以最终的哈希表可能只有134个桶,或者可能大于256个元素.

注:我到达了134号,因为它是最小的整数N,使得0.75 * N> 0. 100.

java – 哈希桶的数量的更多相关文章

  1. 《Swift NSDictionary 的详细使用和部分方法介绍 和 哈希表散列)的阐述和解释 》

    /*《SwiftNSDictionary的详细使用和部分方法介绍和哈希表(散列)的阐述和解释》*//*第一步:我们首先,必须了解一个概念性的东西那就是:哈希哈希的主要解释是:哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。2》哈希列表是跟进式变化的。作为线性数据结构与表格和队列等相比,哈希表无疑是查找速度比较快的一种。在哈希方法中使用的转换函数hash被称作哈希函数。按照此中算法构造出来的表叫做哈希表。

  2. Swift 中“等同性”、“比较”、“哈希” 概念理解

    甚至某些场景下还需要将其作为键值对中的Key,这就涉及到哈希函数以及哈希值的碰撞问题了。不过仔细查看代码,我们会发现上诉冲突的原因之一就是name、capital属性采用了同样的哈希函数。并修改Country中的哈希实现:改进后上诉冲突得以解决:总结本文简单的介绍了Swift中“等同性”、“比较”、“哈希”的概念,并对一些常见哈希冲突进行了分析。

  3. Dictionary如何在Swift中使用Equatable协议?

    focusedCommentId=19980&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-19980What’sactuallyhappening:Wehashavalueonlyonceoninsertion.Wedon’tusehashesforcomparisonofelements,only==.Usinghashesforcomparisonisonlyreasonableifyous

  4. Java超详细分析讲解哈希表

    哈希表是一种根据关键码去寻找值的数据映射结构,该结构通过把关键码映射的位置去寻找存放值的地方,说起来可能感觉有点复杂,我想我举个例子你就会明白了,最典型的的例子就是字典

  5. PHP哈希表实现算法原理解析

    这篇文章主要介绍了PHP哈希表实现算法原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

  6. 详解JavaScript实现哈希表

    哈希表是一种非常重要的数据结构,几乎所有的编程语言都有直接或者间接的应用这种数据结构。本文将为大家介绍通过JavaScript如何实现哈希表,以及哈希表的一些常用操作,需要的可以参考一下

  7. 一文详解Python中哈希表的使用

    哈希表或称为散列表,是一种常见的、使用频率非常高的数据存储方案。本文将站在开发者的角度,带着大家一起探究哈希的世界,感兴趣的小伙伴可以跟随小编一起学习一下

  8. Java真题实练掌握哈希表的使用

    哈希表是一种根据关键码去寻找值的数据映射结构,该结构通过把关键码映射的位置去寻找存放值的地方,说起来可能感觉有点复杂,我想我举个例子你就会明白了,最典型的的例子就是字典

  9. zend-framework – 你如何对包含CSRF表单元素的Zend_Form进行单元测试?

    我正在使用带有Zend_Form的CSRF隐藏哈希元素并尝试单元测试登录但不知道如何编写单元测试以包含该元素.查看文档并阅读尽可能多的教程.我甚至deliciousedthemall,但没有人提到这一点.正确的哈希存储在会话中,Hash表单元素有一个Zend_Session_Namespace实例,该实例包含哈希的命名空间.要对元素进行单元测试,您可以将元素中的Zend_Session_Names

  10. php – DefaultPasswordHasher为相同的值生成不同的哈希值

    我有一个密码存储在数据库哈希与DefaultPasswordHasher添加操作.我有另一个操作来更改登录用户的密码,在此表单上我有一个名为current_password的字段,我需要将其与数据库中的当前密码值进行比较.问题是DefaultPasswordHasher每次为表格的值散列时都会生成不同的哈希值,因此这将永远不会与数据库中的哈希值匹配.按照’current_password’字段的验

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部