HashMap设置初始容量为17,那么它的实际容量是多少?

典型回答

即使初始化 HashMap 的容量为 17,那么它的实际容量却是 32。

这是因为 HashMap 的容量只能为 2 的 N次方,这是 HashMap 的源代码中的实现,无论用户输入的是多少,它总会通过计算,得到第一个比他大的2的N 次方进行返回,这一点可以在 HashMap 的源码中找到,如下源码所示:

方法上的注释也写的很清楚 "Returns a power of two size for the qiven target capacity.” = “返回给定目标容量的2次方大小。”
上面代码的含义就是根据用户传入的容量值(cap 变量),通过计算,得到第一个比他大的 2 的幂并返回,我们编写代码来测试一下 tableSizeFor 方法:

public class TableSizeForExample {
    public static void main(String[] args) {
        int result = tableSizeFor(17);
        System.out.println(result);
    }

    static final int MAXIMUM_CAPACITY = 1 << 30;

    static final int tableSizeFor(int cap) {
        int n = -1 >>> Integer.numberOfLeadingZeros(cap - 1);
        return (n < 8) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
    }
}

以上程序的执行结果为:

从上述结果可以看出,传递的是 17,但最终生成的容量为 32(2 的5次方)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/470162.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SPI读写学习

走到初衷使用STM32的地方&#xff0c;例子是读写W25Q&#xff0c;但是手上没有25Q&#xff0c;只有一个SPI接口的SD卡。在UNO上已经实验OK&#xff0c;线接好后&#xff0c;发现SD卡里有个寄存器转换表&#xff0c;跟例子的SPI接口不一样&#xff0c;要改的太多。 u32 SPI_FLAS…

15|BabyAGI:根据气候变化自动制定鲜花存储策略

一种新型的代理——Autonomous Agents&#xff08;自治代 理或自主代理&#xff09;&#xff0c; 在 LangChain 的代理、工具和记忆这些组件的支持下&#xff0c;它们能够在无需外部干预的情况下自主 运行&#xff0c;这在真实世界的应用中具有巨大的价值。 AutoGPT 它的主要…

Win11用户必备:轻松将右键菜单改回Win10的几种方法

Win11系统的右键菜单相较于Win10系统有所改变&#xff0c;许多用户可能更喜欢Win10系统的样式。下面小编将分享几种方法&#xff0c;帮助用户将Win11的右键菜单恢复为Win10的风格。这些方法简单易行&#xff0c;用户只需按照步骤进行操作即可完成设置&#xff0c;让Win11电脑上…

Flutter 初始WidgetState 简单应用案例分析

本系列文章主要整理Flutter的知识汇总&#xff0c;由浅入深&#xff0c;从Widget的搭建到其中的原理。本文还是围绕Widget在开发中应用和理解。 关于Flutter环境配置和首次创建可以参考前面文章。链接如下&#xff1a; Flutter 安装部署与认识Dart语言 Flutter 使用AndroidS…

湖北省地质灾害分布数据 崩塌滑坡泥石流空间分布地质灾害详查等数据集

地质灾害是指在自然或者人为因素的作用下形成的&#xff0c;对人类生命财产造成的损失、对环境造成破坏的地质作用或地质现象。地质灾害在时间和空间上的分布变化规律&#xff0c;既受制于自然环境&#xff0c;又与人类活动有关&#xff0c;往往是人类与自然界相互作用的结果。…

代码随想录算法训练营第day36|435. 无重叠区间 、 763.划分字母区间 、 56. 合并区间

目录 435. 无重叠区间 763.划分字母区间 56. 合并区间 435. 无重叠区间 力扣题目链接(opens new window) 给定一个区间的集合&#xff0c;找到需要移除区间的最小数量&#xff0c;使剩余区间互不重叠。 注意: 可以认为区间的终点总是大于它的起点。 区间 [1,2] 和 [2,3] …

vue3实现输入框短信验证码功能---全网始祖

组件功能分析 1.按键删除&#xff0c;清空当前input&#xff0c;并跳转prevInput & 获取焦点,按键delete&#xff0c;清空当前input&#xff0c;并跳转nextInput & 获取焦点。按键Home/End键&#xff0c;焦点跳转first/最后一个input输入框。ArrowLeft/ArrowRight键点击…

【日常记录】【插件】使用 html2canvas增加水印

文章目录 1、需求2、html2canvas3、实现4、参考链接 1、需求 实际开发中&#xff0c;经常需要将网页元素转换为图片&#xff0c;以便进行保存、分享或打印等用途。,一般想到的方案就是canvas 比如这个,需要把这个DOM转化成一个图片 2、html2canvas html2canvas 可以把DOM结构转…

vivado 物理优化约束、交互式物理优化

物理优化约束 Vivado Design Suite在物理优化过程中尊重DONT_TOUCH特性。它不在具有这些属性的网络或小区上执行物理优化。要加快网络选择过程中&#xff0c;具有DONT_TOUCH属性的网络经过预过滤&#xff0c;不被考虑用于物理优化。此外&#xff0c;还遵守Pblock分配&#xff…

ClickHouse--13--springboot+mybatis配置clickhouse

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 ClickHouse1.添加maven依赖2.配属数据源3.参数配置4.Druid连接池配置5.entity6.Mapper接口7.Mapper.xml8.controller接口9.创建一个clickhouse表10.测试 ClickHouse…

MySQL数据库概念及MySQL的安装

文章目录 MySQL数据库一、数据库基本概念1、数据2、数据表3、数据库4、数据库管理系统&#xff08;DBMS&#xff09;4.1 数据库的建立和维护功能4.2 数据库的定义功能4.3 数据库的操纵功能4.4 数据库的运行管理功能4.5 数据库的通信功能&#xff08;数据库与外界对接&#xff0…

网络简略总结

目录 一、三次握手 四次挥手 1、三次握手:为了建立长链接进行交互即建立一个会话,使用http/https协议 2、四次挥手是一个断开连接释放服务器资源的过程 3、如果已经建立了连接,但是客户端突然出现故障了怎么办? 4、谁可以中断连接?客户端还是服务端还是都可以? 5、…

小朋友排队(蓝桥杯,acwing,归并)

题目描述&#xff1a; n 个小朋友站成一排。 现在要把他们按身高从低到高的顺序排列&#xff0c;但是每次只能交换位置相邻的两个小朋友。 每个小朋友都有一个不高兴的程度。 开始的时候&#xff0c;所有小朋友的不高兴程度都是 0。 如果某个小朋友第一次被要求交换&#…

解决NameError:name ‘file‘ is not defined 方法

方法1&#xff1a; import os base_diros.path.dirname(os.path.realpath(_file_) print(base_dir)方法2&#xff1a; import os base_diros.getcwd() print(base_dir)

PTA一笔画

作者 张志梅 单位 青岛大学 小丁最近迷恋上一个游戏&#xff0c;传说中的“一笔画”游戏。 那么什么是一笔画&#xff1f;如下图&#xff0c;顾名思义就是一笔可以完成的图。一笔画最基本的要求是在画图的过程中&#xff0c;笔不能离开纸&#xff0c;且笔所画过的线不能重复…

SAR ADC系列6——比较器输入失调电压仿真

ADC中比较器输入失调电压的仿真方法 比较器输入端输入一个共模电平&#xff08;1.65V&#xff09;&#xff0c;一个斜坡信号&#xff08;1.64V-1.66V&#xff09; 时序大概长下面这样 测量在发生翻转时的输入电压之间的差值&#xff0c;进行多次蒙特卡洛的仿真 用公式计算发…

【DNDC模型】土壤碳储量、温室气体排放、农田减排、土地变化、气候变化

由于全球变暖、大气中温室气体浓度逐年增加等问题的出现&#xff0c;“双碳”行动特别是碳中和已经在世界范围形成广泛影响。国家领导人在多次重要会议上讲到&#xff0c;要把“双碳”纳入经济社会发展和生态文明建设整体布局。同时&#xff0c;提到要把减污降碳协同增效作为促…

mapstruct学习笔记-pojo之间的转换

1、前言 mapstruct中常用注解如Mapping,AfterMapping,BeanMapping等的使用,通过案例说明各式各样的业务pojo对象之间如何借助mapstruct完成相互之间的转换,减少代码量的同时也能突出业务逻辑流程,让你的代码里写起来更有规范可言。 2、简介 Reference Guide – MapStruct 3…

mysql中的非空间数据导入sqlserver中空间化

以下操作都在Navicat Premium 15软件中操作 1、mysql导出数据 以导出csv为例 不修改导出路径的话默认就是在桌面 设置编码UTF-8 这边还是默认,最好不要修改,如果文本识别符号为空,导入的时候可能字段会错乱 开始即可 2、导入sqlserver数据库中

排序——直接插入排序

排序之——直接插入排序 插入排序的基本思想 每次将一个待排序的记录按其关键字大小插入前面已经排好序的子序列&#xff0c;直到全部记录插入完成。 步骤&#xff08;从小到大排序&#xff09; 找到没有排序的元素标记元素将已排好序的序列中大于标记元素的往后移插入元素 …
最新文章