创建一个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. linux 上使用pm2启动nodejs服务

    1.安装pm2: npm install -g pm2 2.在启动文件夹内新建文件processes.json: {   "apps": [     {       "n ...

  2. AXI VALID READY 握手机制

    1. VAILD 和READY 传输方向 2. VAILD 和READY依赖关系 前面说到AXI的五个通道是独立的,但通道间必须保持一定的约定关系:写回复必须在一次写事务的最后一个写数据之后读数据必须 ...

  3. uniapp 中获取微信小程序的原生导航栏高度

    const custom = wx.getMenuButtonBoundingClientRect() // console.log(custom) that.yuansheng= custom.he ...

  4. 【Ubuntu】设置桌面文件夹路径

    Ubuntu 系统会将桌面文件夹路径默认设置为 $HOME/Desktop,包括文档.下载.图片等文件夹路径都有各自的默认路径.若想更改这些文件夹路径,可参考『此链接』. 首先到希望更改的路径下建立桌 ...

  5. [*]Is L2 Physics-Informed Loss Always Suitable for Training Physics-Informed Neural Network?

    NeurIPS 2022 本篇工作对PINN中的物理损失进行了探究,作者认为L2损失并不总是适用于训练PINN.并从PDE解的稳定性角度给出了理论性的说明.读了这篇文章,感觉自己的毕业论文做的十分浅显 ...

  6. LOOP GROUP BY 分组循环的使用方法小栗子

    原文链接:https://blog.csdn.net/lmf496891416/article/details/111317377 1.格式: LOOP AT 内表 INTO DATA(工作区) GR ...

  7. pytorch循环神经网络实现回归预测 代码

    pytorch循环神经网络实现回归预测 学习视频:莫烦python # RNN for classification import torch import numpy as np import to ...

  8. P1982 [NOIP2013 普及组] 小朋友的数字 题解

    目录 简单版 题目 code 本题 code 简单版 先要会做这道题 题目 P1115 最大子段和https://www.luogu.com.cn/problem/P1115 这道题其实是动态规划,d ...

  9. JS学习-从服务器获取数据

    从服务器获取数据 Ajax 通过使用诸如 XMLHttpRequest 之类的API或者 - 最近以来的 Fetch API 来实现. 这些技术允许网页直接处理对服务器上可用的特定资源的 HTTP 请 ...

  10. laravel qq第三方登录

    QQ互联官网 首先申请成为开发者获取到后面需要的 client_id redirect_uri client_secret 文档资料/SDK及资源下载/SDK下载/PHP SDK 下载下来修改文件修改 ...