`

面试讲讲Java HashMap

 
阅读更多

面试讲讲Java HashMap

 

1、先讲1.7的 

     HashMap 是基于数组和单向链表的

     默认长度 16 

   

  

 

 

 

   Entity 结构:

     

 扩容可能导致死循环

  

 

 
解决 扩容安全:

把一个线程非安全的集合作为全局共享的,本身就是一种错误的做法,并发下一定会产生错误。

 

所以,解决这个问题的办法很简单,有两种:

 

1、使用Collections.synchronizedMap(Map<K,V> m)方法把HashMap变成一个线程安全的Map

2、使用Hashtable、ConcurrentHashMap这两个线程安全的Map

 

 

Collections.synchronizedMap 把原来的HashMap包装了一遍 put、get等方法前加了synchronized



 

 

2、ConcurrentHashMap 怎么解决的并发线程安全

 

 



 

 



 

 

3、HashTable、HashMap 的区别

 

                             HashTable                 HashMap

key可null              否                                是

v可null                  否                                是

线程安全              是                                否

初始大小              11                                16

Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口。

 哈希值的使用不同,HashTable直接使用对象的hashCode。而HashMap重新计算hash值。

Hashtable扩容时,将容量变为原来的2倍加1,而HashMap扩容时,将容量变为原来的2倍。

 

 

4、jdk1.8后 HashMap变化

 

引入 node、引入红黑树



 

 

 

 

 

 

 

  • 大小: 135.1 KB
  • 大小: 22.2 KB
  • 大小: 17.6 KB
  • 大小: 56.6 KB
  • 大小: 180.3 KB
  • 大小: 200.1 KB
  • 大小: 173.1 KB
分享到:
评论

相关推荐

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ Java面试题11.HashMap和HashTable的区别.mp4 │ Java面试题12.实现一个拷贝文件的类使用字节流还是字符串.mp4 │ Java面试题13.线程的实现方式 怎么启动线程怎么区分线程.mp4 │ Java面试题14.线程并发库和线程池...

    java面试大全视频版

    Java面试题11.HashMap和HashTable的区别 Java面试题12.实现一个拷贝文件的工具类要使用字节流还是字符串 Java面试题13.线程的的实现方式?怎么启动线程?怎么区分线程? Java面试题14.线程并发库和线程池的作用 Java...

    2021年最新java面试题--视频讲解(内部培训84个知识点超详细).rar

    Java面试题11.HashMap和HashTable的区别 Java面试题12.实现一个拷贝文件的工具类要使用字节流还是字符串 Java面试题13.线程的的实现方式?怎么启动线程?怎么区分线程? Java面试题14.线程并发库和线程池的作用 Java...

    java面试笔试资料包括JAVA基础核心知识点深度学习Spring面试题等资料合集.zip

    java面试笔试资料包括JAVA基础核心知识点深度学习Spring面试题等资料合集: JAVA核心知识点整理-282页 Java与哈希算法.docx Java中Lambda表达式的使用.docx JAVA多线程之线程间的通信方式.docx Java注解详解.docx ...

    一个HashMap跟面试官扯了半个小时

    一个HashMap能跟面试官扯上半个小时 ...面试官: 那你跟我讲讲HashMap的内部数据结构? 安琪拉: 目前我用的是JDK1.8版本的,内部使用数组 + 链表红黑树; 安琪拉: 方便我给您画个数据结构图吧: 面试官: 那

    JAVA面试题 对JAVA面试有帮助!

     面试是没什么道理可讲的,它的题目有的不合情理、脱离实际。有在纸上写的,有当面考你的,也有在电话里问的,给你IDE的估计很少(否则你赶快去买彩票,说不定中)。所以如果你看完此文后,请不要抱怨说这些问题都能...

    java7hashmap源码-backend-study:后端学习之路

    loadFactor默认0.75)会进行扩容操作,概括的讲就是扩容后的数组大小是原数组的2倍,将原来的元素重新hashing放入到新的散列表中去 hashmap中indexFor方法,将hash & length-1有什么优点? 答: 多线程下,hashmap的...

    Java面试宝典-经典

    3、存储过程与触发器必须讲,经常被面试到? 92 4、数据库三范式是什么? 94 5、说出一些数据库优化方面的经验? 95 6、union和union all有什么不同? 96 7.分页语句 97 8.用一条SQL语句 查询出每门课都大于80分的学生...

    Java面试宝典2010版

    3、存储过程与触发器必须讲,经常被面试到? 92 4、数据库三范式是什么? 94 5、说出一些数据库优化方面的经验? 95 6、union和union all有什么不同? 96 7.分页语句 97 8.用一条SQL语句 查询出每门课都大于80分的学生...

    java面试题大全(2012版)

    3、存储过程与触发器必须讲,经常被面试到? 92 4、数据库三范式是什么? 94 5、说出一些数据库优化方面的经验? 95 6、union和union all有什么不同? 96 7.分页语句 97 8.用一条SQL语句 查询出每门课都大于80分的学生...

    java 面试题 总结

    Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,...

    最新Java面试宝典pdf版

    3、存储过程与触发器必须讲,经常被面试到? 92 4、数据库三范式是什么? 94 5、说出一些数据库优化方面的经验? 95 6、union和union all有什么不同? 96 7.分页语句 97 8.用一条SQL语句 查询出每门课都大于80分的学生...

    java面试宝典2012

    3、存储过程与触发器必须讲,经常被面试到? 101 4、数据库三范式是什么? 103 5、说出一些数据库优化方面的经验? 103 6、union和union all有什么不同? 104 7.分页语句 106 8.用一条SQL语句 查询出每门课都大于80分的...

    Java面试宝典2012新版

    3、存储过程与触发器必须讲,经常被面试到? 92 4、数据库三范式是什么? 94 5、说出一些数据库优化方面的经验? 95 6、union和union all有什么不同? 96 7.分页语句 97 8.用一条SQL语句 查询出每门课都大于80分的学生...

    Java面试笔试资料大全

    3、存储过程与触发器必须讲,经常被面试到? 92 4、数据库三范式是什么? 94 5、说出一些数据库优化方面的经验? 95 6、union和union all有什么不同? 96 7.分页语句 97 8.用一条SQL语句 查询出每门课都大于80分的学生...

    JAVA面试宝典2010

    3、存储过程与触发器必须讲,经常被面试到? 92 4、数据库三范式是什么? 94 5、说出一些数据库优化方面的经验? 95 6、union和union all有什么不同? 96 7.分页语句 97 8.用一条SQL语句 查询出每门课都大于80分的学生...

    Java面试宝典2012版

    3、存储过程与触发器必须讲,经常被面试到? 92 4、数据库三范式是什么? 94 5、说出一些数据库优化方面的经验? 95 6、union和union all有什么不同? 96 7.分页语句 97 8.用一条SQL语句 查询出每门课都大于80分的...

Global site tag (gtag.js) - Google Analytics