HashMap MAXIMUM_CAPACITY 为什么设置成1 << 30---Java源码

2023-05-16

为什么是1 << 30因为2个因素造成的。

  1. 正如上楼的 MrAmity 所说,HashMap在确定数组下标Index的时候,采用的是( length-1) & hash的方式,只有当length为2的指数幂的时候才能较均匀的分布元素
    。所以HashMap规定了其容量必须是2的n次方
    2.由于HashMap规定了其容量是2的n次方,所以我们采用位运算<<来控制HashMap的大小。使用位运算同时还提高了Java的处理速度。
    HashMap内部由Entry[]数组构成,Java的数组下标是由Int表示的。所以对于HashMap来说其最大的容量应该是不超过int最大值的一个2的指数幂,
    而最接近int最大值的2个指数幂用位运算符表示就是 1 << 30
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HashMap MAXIMUM_CAPACITY 为什么设置成1 << 30---Java源码 的相关文章

随机推荐

  • vue中模板和组件分离

    vue中模板和组件分离 第一种 xff1a 使用script xff0c 将其类型跟改为text x template 代码示例如下 xff1a span class token operator lt span span class to
  • vue中的生命周期(钩子函数)

    vue中的生命周期 xff08 钩子函数 xff09 下图是整个vue的生命周期 生命周期共有八个钩子函数 生命周期 xff1a vue是一个构造函数 xff0c 执行这个函数的时候 xff0c 即相当于实例化了这个函数 xff0c 因此我
  • paddle的两阶段基础算法基础

    paddle的两阶段基础算法详解与实践 有三部分分别是 xff1a 1 xff0c 两阶段算法发展历程 2 xff0c Faster R CNN原理解析 3 xff0c Paddle Detection实战演练 一 xff1a 两阶段算法的
  • Faster R-CNN网络架构

    Faster R CNN网络架构原理解析 Anchor的第一个分支是一个分类分支负责判断途中有没有东西 xff0c 但是不会判断物品 第二个分支是回归分支表示Anchor和真实值有多远最终提取的候选框尽量向真实值靠拢 RPN层是如何提取候选
  • Faster R-CNN原理详解

    Faster R CNN原理详解 首先将RPN输出以及将anchor解码 xff0c 然后对预测框进行clip xff0c 然后对预测狂进行过滤 xff0c filter将面积太小的过滤掉 xff0c 然后将分数较低的去掉 xff0c NM
  • linux出现“INFO: task xxxxxx: 634 blocked for more than 120 seconds.”的3种解决方案

    1 问题描述 最近搭建的一个linux最小系统在运行到241秒时在控制台自动打印如下图信息 xff0c 并且以后每隔120秒打印一次 仔细阅读打印信息发现关键信息是 hung task timeout secs xff0c 第一次遇到这样的
  • vue中的计算属性和侦听器

    vue中的计算属性和侦听器 computed xff08 计算属性 xff09 在模板中放入太多的逻辑不但难以维护 xff0c 就连作者自身在看到代码的时候可能都难以理解 vue开发了计算属性 xff0c 计算属性是依赖于本身的响应式以来进
  • vue-列表的渲染

    vue 列表的渲染 vue的列表渲染指令是基于v for的 xff0c 官方文档中是这么说的 v for 指令需要使用 item in items 形式的特殊语法 xff0c 其中 items 是源数据数组 xff0c 而 item 则是被
  • vue-事件处理

    vue 事件处理 一般使用v on来进行事件监听 xff0c 在监听DOM事件时会触发一部分的js代码 使用v on xxx或 64 xxx绑定事件 xff0c xxx指 事件名 事件的回调要写在methods对象中 xff0c 最终会放在
  • R-CNN算法优化策略

    R CNN算法优化策略 1 xff0c 两阶段检测的进阶模型 首先进行数据处理 xff0c 然后输入backbone得到特征图 xff0c 然后进入RPN中提取候选区域roi xff0c 然后再ROI Align提取特争 xff0c 然后送
  • 一篇文章让你从入门到彻底学会Java

    一篇文章让你从入门到彻底学会Java 文章目录 一篇文章让你从入门到彻底学会Java第一个Java程序 43 基础知识详解Java的对象和类Java中的数据类型Java变量类型Java运算符Java中的循环Java 条件语句Java中的sw
  • vue-进入/离开&列表过渡

    vue 进入 离开 amp 列表过渡 在 CSS 过渡和动画中自动应用 class可以配合使用第三方 CSS 动画库 xff0c 如 Animate css在过渡钩子函数中使用 JavaScript 直接操作 DOM可以配合使用第三方 Ja
  • vue中的路由基础

    vue中的路由 在使用vue router之前 xff0c 首先需要安装该插件 首先在cmd中使用npm install vue router进行插件的安装 xff0c 如果要在工程项目中使用它必须通过Vue use 明确地安装路由功能 就
  • 前端面试的基础四十小问(前20问)

    文章目录 1 什么是HTML语义化 xff1f 2 标签title与alt属性的区别是什么 xff1f 3 iframe的优缺点 xff1f 4 介绍一下CSS的盒子模型 xff1f 5 垂直居中的几种方式 xff1f 6 rgba和opa
  • 前端面试题--react与vue的区别

    前端面试题 react与vue的区别 首先从架构层面来看 xff0c vue是MVVM架构 xff0c 是一个灵活易用的渐进式双向绑定 xff0c 而react并没有准确的架构模式 xff0c react准确的架构模式是调和器和渲染器 xf
  • 前端面试题--详解flex

    前端面试题 详解flex Flex是指弹性盒子布局的意思 Flex的主要作用是 xff1a 解决元素居中问题 xff0c 自动弹性伸缩 xff0c 自动适配不同大小的屏幕和移动端 Flex的术语解释 xff1a 二成员 xff1a 容器和项
  • Linux系统中sysctl命令详解 sysctl -p、sysctl -a、sysctl -w

    sysctl命令用于运行时配置内核参数 xff0c 这些参数位于 proc sys目录下 sysctl配置与显示在 proc sys目录中的内核参数 xff0e 可以用sysctl来设置或重新设置联网功能 xff0c 如IP转发 IP碎片去
  • 前端面试题--vue的父子组件通信

    前端面试题 vue的父子组件通信 比较常见的就是父组件为控制组件子组件为视图组件 父组件传递数据给子组件使用 xff0c 遇到业务逻辑操作时子组件触发父组件的自定义事件 子组件接受使用父组件的数据 xff0c 这里的数据包括属性和方法 xf
  • 前端面试题--了解并简单介绍一下typescript

    前端面试题 了解并简单介绍一下typescript TypeScript是JavaScript的超集 xff0c 具有可选的类型并可以编译为纯JavaScript 从技术上讲TypeScript就是具有静态类型的 JavaScript 向J
  • HashMap MAXIMUM_CAPACITY 为什么设置成1 << 30---Java源码

    为什么是1 lt lt 30因为2个因素造成的 正如上楼的 MrAmity 所说 xff0c HashMap在确定数组下标Index的时候 xff0c 采用的是 length 1 amp hash的方式 xff0c 只有当length为2的