tableSizeFor
2024-10-20 19:11:29
HashMap
tableSizeFor()
/**
Returns a power of two size for the given target capacity.
1.(不考虑大于最大容量的情况)返回大于输入参数且最近的2的整数次幂的数。比如10,则返回16.
2. 该算法让最高位的1后面的位全变为1;最后再让结果n+1,即得到了2的整数次幂的值了。
3. >>>表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0.
比如7的二进制是111,7>>>2表示右移2位,变成001,即为1.
*/
static final int MAXIMUM_CAPACITY = 1 << 30;
static final int tableSizeFor(int cap) {
int n = cap - 1;
n |= n >>> 1; //相当于 n = ( n | (n >>> 1) );
n |= n >>> 2;
n |= n >>> 4;
n |= n >>> 8;
n |= n >>> 16;
return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1; //最后算+1
}
最新文章
- [liusy.api-SMJ]-MAVEN archetype 创建项目
- hibernate配置文件详细解析
- oracle 学习
- iOS-JavaScript向WKWebView传值
- 理解Bitcode
- thinkphp添加后台的构思以及添加数据功能
- [ CodeVS冲杯之路 ] P3955
- 006 列表的三种删除方法 remove,pop,del
- 移动端影像解决方案Adobe Creative SDK for ios
- 使用JSP实现商场购物车模块
- 实现DataGridView行的拖动,即实现行的顺序交换
- spark中数据的读取与保存
- Angular通过订阅观察者对象实现不同组件中数据的实时传递
- [Linux]_ELVE_ssh登录远程阿里服务器
- pwnable.kr-fd-witeup
- React篇-子组件调用父组件方法,并传值
- 通过PMP考试
- docker-compose.md
- Qt自定义控件大全(一)云台仪表盘控件
- delphi修改QQ快捷方式的目标地址达到在启动QQ的同时也能运行自己想要启动的EXE可执行文件
热门文章
- Python学习笔记.md
- Python 康德乐大药房网站爬虫,使用bs4获取json,导入mysql
- NodeJs学习日报day7——简单中间件
- 简易table form梳理
- Caused by: com.sonatype.nexus.staging.client.StagingRuleFailuresException: Staging rules failure! 已解决!
- Dom基础(三):事件冒泡,事件委托(事件代理)和事件捕获
- -2.输入加速(cin,cout)
- Jenkins 自动化部署详解
- 单列集合(Collection-List)
- kubevirt在360的探索之路(k8s接管虚拟化)