学java集合框架的时候,书上讲HashMap泛型类的时候,讲到散列映射。
其中这句话不太理解:
散列映射在它需要更多的存储空间时会自动增大容量。例如,如果散列映射的装载因子是0.75,那么当散列映射的容量被使用了75%时,它就把容量增加到原始容量的2倍。
这句话不太理解,什么是装载因子?怎么增大?散列映射究竟怎么存储数据?去百度也没太整清楚,希望有大神给个系统的解释
java中散列映射的数据结构问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- T_world 2016-10-03 05:25关注
比如说你用一个数组作为散列表,那么如果数组长度为100,而其中的75个元素已经被填满,则此时装载因子就是75%,也就是说装载因子就是目前已经填满的位置的数目除以散列表总容量的比值
而对于容量增大,比如还是这个长度为100的数组,目前已经使用75个单位,达到了装载因子,那么就把数组的长度扩充为200,这样就是容量变为原始容量的二倍
对于散列映射,关键的是散列函数,散列函数决定一个数据的存储位置,一般采用取模的方法,比如散列函数为x%7,那么每一个要存储的值都要模7,比如10%7=3,那么就把10放在下标为3的位置上,而11%7=4,就放在下标为4的位置上
不要把它想得那么复杂,当成数组来理解会好理解一些本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥100 Jenkins自动化部署—悬赏100元
- ¥15 关于#python#的问题:求帮写python代码
- ¥20 MATLAB画图图形出现上下震荡的线条
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
- ¥15 ubuntu虚拟机打包apk错误
- ¥199 rust编程架构设计的方案 有偿
- ¥15 回答4f系统的像差计算
- ¥15 java如何提取出pdf里的文字?