面经-Map

Map在Java里边是一个接口,常见的实现类有HashMap,LinkedHashMap,TreeMap和ConcurrentHashMap
在Java里边,哈希表的实现是由数组+链表组成

HashMap底层数据结构是数组+链表/红黑树
LinkedHashMap底层数据结构是数组+链表+双向链表
TreeMap底层数据结构是红黑树
ConcurrentHashMap底层数据结构也是数组+链表/红黑树

Q&A
1、你能讲讲new一个HashMap的时候,会发生什么吗?
如果我们不指定大小,默认HashMap的大小是16,负载银子的大小是0.75
还有就是:HashMap的大小只能是2次幂的(tableSizeFor方法去判断,不是2次幂强行变为2次幂)
我们把原素放进HashMap的时候,需要算出这个元素所在的位置(hash值)
在HashMap里用的是位运算来取代取模,能够更加高效的算出元素所在位置
而负载因子的大小决定着哈希表的扩容和哈希冲突
比如现在我默认的HashMap大小是16,负债因子是0.75,那么16*0.75=12,这意味着这个数组最多只能存放12个元素,一旦超过12个元素,那么这个哈希表就要扩容了
由于HashMap的大小只能是2次幂,所以HashMap扩容机制为2倍扩容

2、为什么HashMap的大小只能是2次幂?
因为只有大小为2次幂时,才能合理用位运算代替取模

3、扩容这个肯定是耗时的操作,那能不能把负载因子调高一点,比如调到1,那么我的HashMap就等到存放16个元素的时候才开始扩容呢

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java面经-百度准入职老哥整理.pdf》是一份关于百度准入职面试的Java面经整理。这份面经是由百度准入职的老哥整理而成,其中记录了一些面试时可能会遇到的问题以及解答方法。 这份面经对于准备参加百度准入职面试的人来说非常有价值。首先,它列出了一些常见的面试问题,涵盖了Java语言的各个方面,包括基础知识、数据结构与算法、设计模式、多线程、网络编程等等。通过仔细研究和复习这些问题的答案,可以帮助面试者全面了解Java语言的特性和应用。 其次,这份面经还提供了问题的解答思路和方法,帮助面试者理清思路,正确回答问题。这对于很多面试者来说特别有帮助,因为在面试时有时会遇到一些棘手的问题,有了这份面经的指导,面试者可以更好地掌握应对策略。 不过需要注意的是,面经作为一份参考资料,不能完全依赖于它来准备面试。面试官可能会问一些不在面经中列出的问题,因此考生还是需要自己对Java语言有充分的了解,并能够熟练运用。同时,面试官还会关注考生的沟通能力、解决问题的能力以及对新技术的学习和掌握能力。 总体来说,《java面经-百度准入职老哥整理.pdf》是一份非常宝贵的资料,可以帮助面试者对Java面试中可能会遇到的问题有更深入的了解,提供了解答思路和方法。但记住,面试准备还需要多方面的知识积累和实践经验的积累,才能在面试中展现自己的优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值