【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集合类面试四】、 描述一下Map put的过程
面试官:描述一下Map put的过程** 参考答案: HashMap是最经典的Map实现,下面以它的视角介绍put的过程: 1、首次扩容: 先判断数组是否为空,若数组为空则进行第一次扩容(resize); 2、计算索引: 通过hash算法,计算键值对在数组中的索引; 3、插入数据: 如果当前位置元素为空,则直接插入数据; 如果当前位置元素非空,且key已存在,则直接覆盖其...

【Java集合类面试三】、Map接口有哪些实现类?
面试官:Map接口有哪些实现类?** 参考答案: Map接口有很多实现类,其中比较常用的有HashMap、LinkedHashMap、TreeMap、ConcurrentHashMap。 对于不需要排序的场景,优先考虑使用HashMap,因为它是性能最好的Map实现。如果需要保证线程安全,则可以使用...
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
Java类相关内容
- Java类代码方法
- Java类扩展
- Java类功能
- 运行Java类
- Java类代码
- Java类main
- Java字符串类区别
- Java类接口
- Java多线程集合类
- Java线程集合类
- Java多线程类
- Java线程类
- Java类方法面试
- Java类类型信息
- Java异常类信息
- Java异常处理类
- Java异常处理异常类
- Java类类型
- Java collections类
- Java字节码类文件
- Java字节码类
- Java类原理
- Java类注入
- Java继承类方法
- Java编程线程类
- Java类优缺点
- Java多线程继承类
- Java继承thread类线程
- Java runnable接口类
- Java多线程线程thread类
Java更多类相关
- Java多线程继承类runnable
- Java thread类线程方法
- Java编程线程thread类
- Java线程编程类
- Java方法类接口
- Java thread类方法
- Java thread类线程
- Java编程类接口
- Java线程类方法
- Java多线程thread类方法
- Java接口类
- Java类解析
- Java学习类
- Java编程类
- Java类string
- Java面试类
- Java类构造方法
- Java类实例
- Java开发类
- Java类线程
- Java类访问
- Java类源码
- Java集合类面试
- Java类应用
- Java面试题类
- Java线程thread类
- Java类字符串
- Java optional类
- Java类封装
- Java文件类
Java开发者
Java开发者成长课堂,课程资料学习,实战案例解析,Java工程师必备词汇等你来~
+关注