一、初窥HashMap

HashMap是应用更广泛的哈希表实现,而且大部分情况下,都能在常数时间性能的情况下进行put和get操作。要掌握HashMap,主要从如下几点来把握:

  • jdk1.7中底层是由数组(也有叫做“位桶”的)+链表实现;jdk1.8中底层是由数组+链表/红黑树实现
  • 可以存储null键和null值,线程不安全。在HashMap中,null可以作为键,这样的键只有一个,但可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该key,也可以表示该key所对应的value为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个key,应该用containsKey()方法来判断。而在Hashtable中,无论是key还是value都不能为null。
  • 初始size为16,扩容:newsize = oldsize*2,size一定为2的n次幂
  • 扩容针对整个Map,每次扩容时,原来数组中的元素依次重新计算存放位置,并重新插入
  • 插入元素后才判断该不该扩容,有可能无效扩容(插入后如果扩容,如果没有再次插入,就会产生无效扩容)
  • 当Map中元素总数超过Entry数组的75%,触发扩容操作,为了减少链表长度,元素分配更均匀
  • 1.7中是先扩容后插入

Java基础学习总结(152)——JDK 1.7和 JDK 1.8中HashMap的实现有什么不同?相关推荐

  1. Java基础学习总结(157)——国产开源JDK来了

    简介 Alibaba Dragonwell 是一款免费的, 生产就绪型Open JDK 发行版,提供长期支持,包括性能增强和安全修复.阿里巴巴拥有最丰富的Java应用场景,覆盖电商,金融,物流等众多领 ...

  2. JAVA基础学习预科部分 (Markdown + dox)2021/2/22持续更新中

    javaSE从 2021/02/22开始,预计到2021/02/28,原本预计的算法题解先鸽一下. -博客Blog的重要性 & Markdown语法 基础markdown语法 标题, 直接使用 ...

  3. 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结

    Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 4.1 class作为成员变量 4.2 interface作为成 ...

  4. 尚学堂JAVA基础学习笔记_2/2

    尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...

  5. Java基础学习Day09--字符串

    Java基础学习Day09--字符串 一.简介: 二.String类字符串 三.String字符串的存储原理 四.字符串常用方法 1.equals()方法 2.字符串的搜索 3.截取子字符串 4.去除 ...

  6. Java 基础学习-Java语言概述

    Java 基础学习 第一章 Java语言概述 回顾java基础知识,进行整理记录. 文章目录 Java 基础学习 前言 一. Java语言发展史(了解) 二.Java语言跨平台原理(理解) 三.JRE ...

  7. Java基础学习——第十章 枚举类注解

    Java基础学习--第十章 枚举类&注解 一.枚举类(enum) 1. 枚举类的概念 枚举类:类的对象只有有限个,确定的 线程状态:创建.就绪.运行.阻塞.死亡 当需要定义一组常量时,强烈建议 ...

  8. java基础学习-4

    Java基础学习-4 static 注意事项 重新认识main方法 继承 小练习 子类到底能继承父类中的哪些内容(第126集)*** 继承过程中成员变量和成员方法的访问特点 小练习 小总结 构造方法的 ...

  9. java基础学习-6

    Java基础学习-6 双列集合 Map的常见API Map的遍历方式 HashMap 小练习 LinkedHashMap TreeMap TreeMap--小练习1 TreeMap--小练习2 Tre ...

  10. java基础学习整理(一)

    java基础学习整理(一) lesson1: D0s命令: 1.回到根目录,>cd \ 2.复制命令行下的内容,右击标记所要复制的内容,这样就已经复制好了,右击粘贴就可以了. 3.查看,设置环境 ...

最新文章

  1. 勤于思考:从客户端中检测到有潜在危险的 Request.Form 值
  2. P1067 多项式输出(模拟)
  3. 能不做自己写个类,也叫java.lang.String
  4. linux 查看防火墙状态_每天五分钟学习Linux系列之 - 系统安全配置
  5. LeetCode 107. Binary Tree Level Order Traversal II
  6. 大数据分析过程中包含哪些技术
  7. 锁屏界面提示某些设置已隐藏_OPPO手机忘记锁屏密码怎么办?教你一招轻松解开!...
  8. SSM-SpringMVC-15:SpringMVC中小论注解式开发之通配符篇
  9. IEEE的论文哪里可以下载?
  10. 记录一下Material Dialogs的使用
  11. 小程序 多线程Worker(类似h5的webWorker)
  12. 哥德巴赫猜想 php,哥德巴赫猜想的程序验证
  13. 《聪明的投资者》摘要——价值投资的起点
  14. List Set Map
  15. MYSQL环境搭建(windows)
  16. Java(一)——环境配置及相关软件的安装
  17. 跨境电商卖家发货形式多样,亚马逊卖家如何选择?
  18. 开发一个导出功能,将echarts图表导出到excel文件中
  19. 尼甘布 小渔村的惬意生活
  20. uniapp 微信小程序版本更新提示

热门文章

  1. LeetCode-70 爬楼梯
  2. linux切换至root权限,【linux】sudo su切换到root权限
  3. 伺服驱动器cn1引脚定义_英威腾伺服
  4. vue cli脚手架详解_vue-cli脚手架搭建vue项目搭建
  5. 三维重构 c++_桐柏3d打印模型生产厂家【博通三维】-博通三维
  6. python雷达图怎么做_使用Python绘制雷达图
  7. ecs云服务器 系统登陆密码,云服务器ecs系统登录密码
  8. python中函数包括标准库函数吗_Python标准库:内置函数divmod(a, b)
  9. kafka 的pom文件_Flink 消费 Kafka 数据
  10. python knnmatch_opencv python 特征匹配