`

面试讲讲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...

    2017java面试题

    3. **集合框架**:面试中常见的主题包括List、Set、Map接口及其实现,如ArrayList、LinkedList、HashSet、HashMap等。面试者需要了解它们的特点、性能和适用场景。 4. **内存管理与垃圾回收**:理解Java虚拟机(JVM...

    Java常见笔试、面试系列深度剖析第3讲

    在本节"Java常见笔试、面试系列深度剖析第3讲"中,我们将深入探讨Java编程语言的一些关键概念和常见问题,这些内容对于准备Java相关的笔试和面试至关重要。讲解由张龙和风中叶两位专家主讲,他们将分享丰富的经验与...

    资深工程师整理面试题:Java

    JavaBean 是可复用的组件,对 JavaBean 并没有严格的规范,理论上讲,任何一个 Java 类都可以是一个 Bean。 6. 多态与继承 答:多态性是指允许不同类的对象对同一消息作出响应。继承是一种联结类的层次模型,并且...

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

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

    JavaGuide面试突击版.pdf

    JavaGuide面试突击版.pdf是一份详细的Java面试指南,涵盖了Java基础知识、集合框架、多线程、JVM、IO流、异常处理、序列化、关键字等多个方面的知识点。 1. Java基础知识 * Java基础知识包括面向对象、Java语法、...

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

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

    Java常见笔试、面试题目深度剖析第二、三讲下载地址

    根据提供的信息,我们可以深入探讨与“Java常见笔试、面试题目深度剖析第二、三讲”相关的知识点。虽然直接的视频或文档链接无法在此处查看,但根据标题和描述中提到的信息,我们可以推测出讲座可能涉及的一些核心...

    HashMap夺命连环问面试题分享给需要同学.docx

    模拟面试之HashMap ...\ 1.HashMap的底层数据结构是什么? 追问:为什么在1.8中增加红黑树? 追问:链表过深问题为什么不用二叉查找树代替,而选择红黑树?为什么不一直使用红黑树? 追问:讲一下你对红黑树的认识 2...

    java面试讲题汇总-word可打印版

    Java 面试知识点详解 1. JDK 和 JRE 的区别:JDK(Java Development Kit)是Java开发工具包,包含JRE(Java Runtime Environment)和编译器、调试器等开发工具。JRE则是Java运行环境,仅用于运行已编译的Java程序。...

    Java常见笔试、面试系列深度剖析第2讲

    在本讲“Java常见笔试、面试系列深度剖析第2讲”中,主讲人张龙与风中叶共同探讨了Java编程语言在实际面试和笔试中的核心知识点,旨在帮助求职者提升对Java技术的理解和应用能力。以下是本讲中涵盖的一些关键知识点...

    java面试300讲MD答案课件

    "java面试300讲MD答案课件"涵盖了这些关键领域的讲解和解答,帮助求职者准备面试。 1. **编程基础**: - Java语法:包括变量、数据类型、运算符、流程控制语句(if, switch, for, while)、异常处理等基本概念。 ...

    1658页《Java面试突击核心讲》

    1658页的《Java面试突击核心讲》无疑是一本详尽的指南,旨在帮助开发者深入理解Java语言的关键概念和技术,以便在面试中脱颖而出。这份资料涵盖了Java的基础知识、进阶特性、并发编程、集合框架、JVM内存管理等多个...

    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面试题大全(2012版)

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

    Java常见笔试、面试系列深度剖析第六讲

    本讲将深度剖析Java中的"==运算符"和"equals()方法",这两个是判断对象之间相等性的主要手段。 一、"=="运算符 "=="运算符在Java中用于比较基本类型的值是否相等,例如int、char、boolean等。对于引用类型的变量,...

    HashMap 概述 精讲 .md

    HashMap是Java集合框架的一部分,它实现了Map接口,提供了基于哈希表(Hash Table)的键值对存储方式。HashMap允许将null作为键或值,但考虑到性能和逻辑清晰度,通常避免这样做。作为一种非线程安全的数据结构,...

Global site tag (gtag.js) - Google Analytics