当前位置: 首页 > news >正文

企业网站建设的基本标准是厦门网站制作阳哥

企业网站建设的基本标准是,厦门网站制作阳哥,天津网站建设方案外包,太原建站一条龙文章目录 前言正文为什么要指定容量#xff1f; 前言 其实可以看到我写了这么久的博客#xff0c;很少去写hashMap的东西。 为什么#xff1f;因为这个东西感觉是java面试必备的#xff0c;我感觉大家都看到腻了#xff0c;所以一直没怎么去写hashMap相关的。 本篇内容 前言 其实可以看到我写了这么久的博客很少去写hashMap的东西。 为什么因为这个东西感觉是java面试必备的我感觉大家都看到腻了所以一直没怎么去写hashMap相关的。 本篇内容 举例说明 HashMap 使用的时候指定容量 错误用法源码走读HashMap初始容量的 计算方式源码走读扩容的点正确应该怎么去用一定要理解再用一些杂谈。 提示以下是本篇文章正文内容下面案例可供参考 正文 不开玩笑真的都知道指定容量但是有些用对了有些没用对。 为什么要指定容量 这个原由都不用说阿里的java开发手册就说的很明白 其实核心点就是避免数据量慢慢增加导致反复触发扩容影响性能。 于是乎就很多错误的使用方式了虽热影响不大 错误理解使用示例 ① 分页查询出来的数据需要转换成 Map 因为分页是固定了一页最多15条。 所以出现了这个代码 MapString, String map new HashMap(15);或者是 MapString, String map new HashMap(userPageList.size());错误理解使用示例 ② 类型type 有 4种 要放到一个map里面返回去。 所以出现了这个代码 MapInteger, String map new HashMap(4);错误理解使用示例 ③ 一个参数map里面想放2个参数。 所以出现了这个代码 MapString, String map new HashMap(2);不多举例其实这几个错误示例都是错在指定容量的 值上。 正例initialCapacity 需要存储的元素个数/负载因子 1 默认 指定是 传入 16 16* 0.7512 所以扩容阈值是12 。 说到这里大家应该知道为什么上面是错误用法了吧 比如我们想 存 4个元素到Map 我们为了避免后面触发扩容影响性能其实元素少性能没多少影响 就指定了 4 MapInteger, String map new HashMap(4);其实这样 4x0.75 3 那么如果存放第四个元素的时候就会触发扩容 这样就是违背了我们开始指定 的 4 的最初用意。 实战看看这个错误使用场景的情况 同过反射将capacity属性的权限拿到可以直接打印出来看下capacity的变化就知道是否触发了扩容 public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {MapString, String map new HashMap(4);Class? mapType map.getClass();Method capacity mapType.getDeclaredMethod(capacity);capacity.setAccessible(true);map.put(1, 第一个元素插入);System.out.println(capacity : capacity.invoke(map) size : map.size());map.put(2, 第二个元素插入);System.out.println(capacity : capacity.invoke(map) size : map.size());map.put(3, 第三个元素插入);System.out.println(capacity : capacity.invoke(map) size : map.size());map.put(4, 第四个元素插入);System.out.println(capacity : capacity.invoke(map) size : map.size());}看下打印效果 为什么当size 3 也就是插入三个元素的时候还没变。 因为我们初始化容量值传入的 4 4* 0.75 3. 扩容阈值是 3 当插入第四个元素的时候 就超过了扩容阈值所以触发了扩容所以看的最后其实是进行了一次扩容打印出来的capacity是 8. 那么我们应该传多少 正例initialCapacity 需要存储的元素个数/负载因子 1 4/0.75 1 6.3333333 我们指定传6么还是传 7 指定6 指定7 指定67 都没区别好像 值得庆祝的是没有再次触发扩容。 那么为啥没区别呢 HashMap会转换成大于该capacity 的第一个2的幂作为容量 。 所以传5678 都是 8 传910111213141516 都是 16 好了不多啰嗦了 最后再补一嘴 默认指定容量其实就是 内存换性能。 所以真正去使用指定容量的时候 需要考虑如果我是一个定时任务允许跑1小时。。。我需要考虑性能么 或者如果我服务内存很小我是不是要对内存省吃俭用
http://www.w-s-a.com/news/763134/

相关文章:

  • 怎么用自己主机做网站_如何做简单的网站
  • 阿里巴巴国际站跨境电商平台为什么有点网站打不开
  • 甘肃做网站哪家好网站开发 都包含什么语言
  • 合肥哪里有做网站的广告型网站怎么做的
  • 用dede做的网站国外免费空间哪个好
  • dede个人网站模板企点
  • 韩雪个人网站wordpress 怎么添加网站备案信息
  • 个人网站可以做地方技能培训班
  • 品牌营销策略研究无锡 网站 seo 优化
  • 在线推广网站的方法有哪些织梦网站首页目录在哪
  • 做爰全过程免费网站的视频做网站的几个步骤
  • cpa建站教程青海西宁制作网站企业
  • 简易的在线数据库网站模板网站多服务器建设
  • 成都seo网站建设花店网页模板html
  • 义乌市网站制作网络营销策略名词解释
  • 高端品牌网站建设图片wordpress 资源站主题
  • 上海建设工程监督总站网站电商网站wordpress
  • 网站建设 医院菏泽网站建设熊掌号
  • 成都网站建设企业预约网免费建站流程
  • 网站建设胶州中国政务网站建设绩效评估
  • 合肥知名网站推广胶东国际机场建设有限公司网站
  • asp.ney旅游信息网站下载 简洁濮阳微信网站开发
  • 建设网站专业怎么上传网站程序到空间
  • 县城乡建设局网站微商城小程序哪个好
  • 博物馆门户网站建设优势重庆seo排名系统运营
  • 哪有app制作公司上海seo排名
  • 长沙建站seo公司北京招聘信息
  • 建设网站情况说明范文四川个人证书查询网官网
  • 推广学校网站怎么做公司可以做多个网站吗
  • 游戏网站后台建设郑州定制网站