【Java集合类面试十四】、HashMap是如何解决哈希冲突的?
面试官:HashMap是如何解决哈希冲突的?** 参考答案: 为了解决碰撞,数组中的元素是单向链表类型。当链表长度到达一个阈值时,会将链表转换成红黑树提高性能。而当链表长度缩小到另一个阈值时,又会将红黑树转换回单向链表提高性能。
【Java集合类面试十三】、HashMap如何实现线程安全?
面试官:HashMap如何实现线程安全?** 参考答案: 1、直接使用Hashtable类; 2、直接使用ConcurrentHashMap; 3、使用Collections将HashMap包装成线程安全的Map。
【Java集合类面试十二】、HashMap为什么线程不安全?
面试官:HashMap为什么线程不安全?** 参考答案: HashMap在并发执行put操作时,可能会导致形成循环链表,从而引起死循环。
【Java集合类面试十一】、HashMap为什么用红黑树而不用B树?
面试官:HashMap为什么用红黑树而不用B树?** 参考答案: B/B+树多用于外存上时,B/B+也被成为一个磁盘友好的数据结构。 HashMap本来是数组+链表的形式,链表由于其查找慢的特点,所以需要被查找效率更高的树结构来替换。如果用B/B+树的话,在数据量不是...
【Java集合类面试十】、HashMap中的循环链表是如何产生的?
面试官:HashMap中的循环链表是如何产生的?** 参考答案: 在多线程的情况下,当重新调整HashMap大小的时候,就会存在条件竞争,因为如果两个线程都发现HashMap需要重新调整大小了,它们会同时试着调整大小。在调整大小的过程中,存储在链表中的元素的次序会反过来,...
【Java集合类面试九】、介绍一下HashMap的扩容机制
面试官:介绍一下HashMap的扩容机制** 参考答案: 1、数组的初始容量为16,而容量是以2的次方扩充的,一是为了提高性能使用足够大的数组,二是为了能使用位运算代替取模预算(据说提升了5~8倍)。 2、数组是否需要扩充是通过负载因子判断的,如果当前元素个数为数组容量的0.75时,就会扩充数组。这个0.75就是默认的负载因子,可由构造器传入。我们也可以设置大于1的负载因子,这样数组就不会...

【Java集合类面试八】、 介绍一下HashMap底层的实现原理
面试官: 介绍一下HashMap底层的实现原理** 参考答案: 它基于hash算法,通过put方法和get方法存储和获取对象。 存储对象时,我们将K/V传给put方法时,它调用K的hashCode计算hash从而得到bucket位置,进一步存储,HashMap会根据当前bucket的占用情况自动调整...
【Java集合类面试七】、 JDK7和JDK8中的HashMap有什么区别?
面试官:JDK7和JDK8中的HashMap有什么区别?** 参考答案: JDK7中的HashMap,是基于数组+链表来实现的,它的底层维护一个Entry数组。它会根据计算的hashCode将对应的KV键值对存储到该数组中,一旦发生hashCode冲突,那么就会将该KV键值对放到对应的已有元...
【Java集合类面试六】、 HashMap有什么特点?
面试官:HashMap有什么特点?** 参考答案: 1、HashMap是线程不安全的实现; 2、HashMap可以使用null作为key或value。
【Java集合类面试五】、 如何得到一个线程安全的Map?
面试官: 如何得到一个线程安全的Map?** 参考答案: 1、使用Collections工具类,将线程不安全的Map包装成线程安全的Map; 2、使用java.util.concurrent包下的Map,如ConcurrentHashMap; 3、不建议使用Hashtable,虽然Ha...
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
Java更多集合相关
- Java集合hashtable
- Java集合hashmap
- Java集合数据结构
- Java集合框架优化
- Java集合优化
- Java数据集合
- Java功能集合
- Java streams集合
- Java集合框架解析
- Java集合解析
- Java集合List
- Java集合ArrayList
- Java集合map
- Java集合面试
- Java arraylist集合
- Java集合set
- Java list集合
- Java集合接口
- Java hashset集合
- Java集合treeset
- Java集合源码
- Java集合数据
- Java集合linkedlist
- Java集合面试题
- Java面试集合
- Java集合排序
- Java集合数据性能
- Java容器集合
- 集合Java
- Java数组集合
Java开发者
Java开发者成长课堂,课程资料学习,实战案例解析,Java工程师必备词汇等你来~
+关注