HashMap问答
二、HashMap的继承关系
三、HashMap数据结构
四、HashMap查找、添加元素是怎样的
五、什么是Hash碰撞
六、HashMap是线程安全的吗?
七、HashMap怎样处理null
一、什么是HashMap
HashMap是一个key-value集合,结合了数组和链表的优点,提供快速查询、新增、修改map节点的功能
二、HashMap的继承关系

三、HashMap数据结构
橙色是一个数组,每个数组关联一个Entry链表。
下面是一个entry的数据结构,包含hash值,key,value和指向下一个entry的链接
| hash | key | value | next |

四、HashMap查找、添加元素是怎样的
添加元素put:先对key进行hash,根据hash值定位到数组下标(每个数组元素对应的是一个entry链表),如果无元素则成为第一个元素,如果有元素则循环链表,有key相同的entry则覆盖,没有则将新元素放在链表头,并指向原来的第一个元素
查找元素get:先对key进行hash,根据hash值定位到数组下标,然后循环链表,找到key相同的entry并返回value
五、什么是Hash碰撞
步骤四种put时,如果新增entry定位的数组下标已有元素就发生hash碰撞,因为最好的分配是每个数组元素只包含一个entry,这样时间复杂度就是O(1),如果包含多个元素,查找的时候就需要循环链表,时间复杂度就是O(n)
六、HashMap是线程安全的吗?
不是,如果多个线程同时put元素,key相同的时候,可能会发生后面的put覆盖前面的key。
七、HashMap怎样处理null
HashMap允许key、value都为null,null会存放在索引为0的数组中
HashMap问答的更多相关文章
- 关于Android中ArrayMap/SparseArray比HashMap性能好的深入研究
由于网上有朋友对于这个问题已经有了很详细的研究,所以我就不班门弄斧了: 转载于:http://android-performance.com/android/2014/02/10/android-sp ...
- HashMap的四种遍历方法,及效率比较(简单明了)
https://yq.aliyun.com/ziliao/210955 public static void main(String[] args) { HashMap<Integer, Str ...
- SparseArray替代HashMap来提高性能
SparseArray是 Android框架独有的类,在标准的JDK中不存在这个类.它要比 HashMap 节省内存,某些情况下比HashMap性能更好,按照官方问答的解释,主要是因为SparseAr ...
- Java字符串面试问答
字符串是使用最广泛的Java的类之一.在这里,我列出了一些重要的Java的字符串面试问答. 这将有助于您全面了解String并解决面试中与String有关的任何问题. Java基础面试问题 Java中 ...
- 大厂面试必问题!HashMap 怎样解决hash桶碰撞?
HashMap冲突解决方法比较考验一个开发者解决问题的能力.下文给出HashMap冲突的解决方法以及原理分析,无论是在面试问答或者实际使用中,应该都会有所帮助.在Java编程语言中,最基本的结构就是两 ...
- Java 多线程 | 并发知识问答总结
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
- 大厂面试必问!HashMap 怎样解决hash冲突?
HashMap冲突解决方法比较考验一个开发者解决问题的能力. 下文给出HashMap冲突的解决方法以及原理分析,无论是在面试问答或者实际使用中,应该都会有所帮助. 在Java编程语言中,最基本的结构就 ...
- HashMap与TreeMap源码分析
1. 引言 在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Ja ...
- HashMap的工作原理
HashMap的工作原理 HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间 ...
随机推荐
- mysql主从复制(半同步方式)
mysql主从复制(半同步方式) 博客分类: MySQL mysqlreplication复制 一.半同步复制原理介绍 1. 优点 当事务返回客户端成功后,则日志一定在至少两台主机上存在. MySQ ...
- spark学习之路1--用IDEA编写第一个基于java的程序打包,放standalone集群,client和cluster模式上运行
1,首先确保hadoop和spark已经运行.(如果是基于yarn,hdfs的需要启动hadoop,否则hadoop不需要启动). 2.打开idea,创建maven工程.编辑pom.xml文件.增加d ...
- 移动端自动化测试(一)之 Appium+Pyhton环境准备篇
移动端自动化测试(一)之 Appium+Pyhton环境准备篇 2016-11-17 16:51 by CockRoacher, 5046 阅读, 1 评论, 收藏, 编辑 由于工作的需要进行Andr ...
- window下用taskkill杀死进程
TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter] [/PID processid | /IM imagename] } ...
- JavaMelody 项目性能监控和调优工具
转自 JavaMelody 可以实现对内存.CPU.线程.JDBC 连接数.HTTP 请求执行时间.SQL 执行时间(分析 Top SQL).方法执行时间(分析系统方法性能瓶颈)等等的监控. 配置方式 ...
- JavaSE| 面向对象-类的五大成员
面向对象 面向对象只是其中一种编程思想,还有很多其他的编程思想:面向过程.面向切面.面向服务编程... 面向过程的思维方式:注重步骤.过程,面向过程强调的是功能行为: 面向对象的思维方式:关注的是“对 ...
- 005 Numpy的基本操作
一:数组与标量,数组与数组之间的运算 1.数组与标量之间的计算 2.数组之间的加减乘除 3.元素级运算 二:.矩阵积 1.说明 这个的意思是第一个数组的列,必须和第二个数组的行的大小相同 2.运算 3 ...
- TensorFlow加载图片的方法
方法一:直接使用tensorflow提供的函数image = tf.gfile.FastGFile('PATH')来读取一副图片: import matplotlib.pyplot as plt; i ...
- 20165220 2017-2018-2《Java程序设计》课程总结
每周作业链接汇总: 20165220 我期望的师生关系 20165220 学习基础和C语言基础调查 20165220 Linux安装及学习 20165220 第一周学习总结 20165220 第二周学 ...
- Context家族
--摘自<android插件化开发指南> 1.ContextWrapper只是一个包装类,没有任何具体的实现,真正的逻辑都在ContextImpl里面 2.应用程序中包含多个Context ...