创建一个HashMap实例,该实例具有足够高的“初始容量”

/**
* 创建一个{@link HashMap}实例,该实例具有足够高的“初始容量”
*
* @param expectedSize 预计容量
* @since 该方法摘自com.google.guava-30.1.1-jre版本, 由于公司项目没有用此jar包,所以这里摘出来方便使用
*/
public static <K, V> HashMap<K, V> newHashMapWithExpectedSize(int expectedSize) {
return new HashMap<>(capacity(expectedSize));
} /**
* 返回一个容量,该容量足以使Map不被调整大小,只要它的大小不超过expectedSize,并且加载因子大于等于它的默认值(0.75)
*
* @since 该方法摘自com.google.guava-30.1.1-jre版本, 由于公司项目没有用此jar包,所以这里摘出来方便使用
*/
static int capacity(int expectedSize) {
if (expectedSize < 3) {
if (expectedSize < 0) {
throw new IllegalArgumentException("容量不能为负数,但是现在是: " + expectedSize);
}
return expectedSize + 1;
}
// int的最大二次幂
int maxPowerOfTwo = 1 << (Integer.SIZE - 2);
if (expectedSize < maxPowerOfTwo) {
//这是JDK8中用于在发生putAll时调整大小的计算;这似乎是我们能做的最保守的计算。0.75是默认负载系数。
return (int) ((float) expectedSize / 0.75F + 1.0F);
}
// int值大于int的最大二次幂了,就没有更大的了
return Integer.MAX_VALUE;
}

创建一个HashMap实例,该实例具有足够高的“初始容量”的更多相关文章

  1. 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(三)(错误整理篇)

    使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二) 以上两篇已经把流 ...

  2. 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二)(代码篇)

    这篇是上一篇的延续: 用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 源代码在github上可以下载,地址:https://github.com/guoxia ...

  3. 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一)

    梳理下使用spring+springMVC+mybatis 整合后的一个简单实例:输入用户的 ID,之后显示用户的信息(此次由于篇幅问题,会分几次进行说明,此次是工程的创建,逆向生成文件以及这个简单查 ...

  4. 创建一个 Vue 的实例

    每个 Vue 应用都是通过 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({         // 选项 }) 选项:el.data.methods el: 类型: ...

  5. 创建一个vue实例

    创建一个vue实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({ // 选项 }) 虽然没有完全遵循 MVVM 模型,但是 Vue ...

  6. Vue01 Vue介绍、Vue使用、Vue实例的创建、数据绑定、Vue实例的生命周期、差值与表达式、指令与事件、语法糖

    1 Vue介绍 1.1 官方介绍 vue是一个简单小巧的渐进式的技术栈,它提供了Web开发中常用的高级功能:视图和数据的解耦.组件的服用.路由.状态管理.虚拟DOM 说明:简单小巧 -> 压缩后 ...

  7. Eucalyptus-利用镜像启动一个Windows Server 2008r2实例

    1.前言 使用kvm制作Eucalyptus镜像(Windows Server 2008r2为例)——http://www.cnblogs.com/gis-luq/p/3990792.html 上一篇 ...

  8. 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型

    第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...

  9. 【转】怎样创建一个Xcode插件(Part 2)

    原文:How To Create an Xcode Plugin: Part 2/3 原作者:Derek Selander 译者:@yohunl 译者注:原文使用的是xcode6.3.2,我翻译的时候 ...

  10. 【Android Developers Training】 18. 重新创建一个Activity

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

随机推荐

  1. 数据仓库服务 GaussDB(DWS)

    官网:总体介绍 https://support.huaweicloud.com/dws/index.html 部分源码解读 https://my.oschina.net/gaussdb?tab=new ...

  2. print语法

    循环体 是 缩进的 :缩进是 Python 组织语句的方式.在交互式命令行里,得为每个缩输入制表符或空格.使用文本编辑器可以实现更复杂的输入方式:所有像样的文本编辑器都支持自动缩进.交互式输入复合语句 ...

  3. 学习- vue 中 API $attr 用法

    2.4.0新增 定义:包含了父作用域不作为 prop 被识别(且获取)的 attribute 绑定( class 和 style 除外).当一个组件没有声明任何 prop 时,这里会包含所有父作用域的 ...

  4. 学习-Vue3-绑定内联样式

    <template> <div> <!-- 绑定内联样式--绑定对象 --> <!-- <div :style="{color: active ...

  5. https://github.com/wuweilin/springboot-login-demo

    wuweilin/springboot-login-demo: Springboot后端登录注册项目演示demo (github.com) jdk-8u172-windows-x64.exe apac ...

  6. Spring Boot应用启动

    1.Eclipse 中启动Spring Boot应用 右键应用程序启动类, Run As Java Application 2.maven 命令: mvn spring-boot:run 在应用程序启 ...

  7. window操作

    1.进入目录 cd ... 2. 进入D盘 D: 3.读取文件内容 type file

  8. mmdetection3d安装

    conda create -n openmmlab python=3.7 -y conda activate openmmlab pip install torch==1.8.1+cu101 torc ...

  9. Ribbon负载均衡调用

    pring cloud Ribbon 是基于Netfilix Ribbon 实现一套 客户端 负载均衡工具. 简单的说, Ribbon 是 Netflix 发布开源项目. 主要是提供客户端软件负载均衡 ...

  10. PI ID关联IR配置问题

    例如问题:无数据 1.软件组织生成的id与ID配置id不一致(由于删除软件组织重新创建) 1.1找到需要修改位置 1.2 IR查询id 1.3 替换指定需要插入'-'