数据存储底层?

数据底层具体存储是一个Node<K,V>

HashMap 是基于哈希来映射的,那当映射冲突时候怎么解决?

链地址,数组+链表

HashMap 什么时候扩容?

负载因子 loadFactor

HashMap jdk7和8的区别?

HashMap是数组+链表+红黑树(JDK1.8增加了红黑树部分),链表长度大于8时转化为红黑树

HashMap是线程安全的吗?为什么?或者说什么情况下会出现?

不是,在扩容的时候会出现死循环,环形链表

HashMap底层数组的长度为什么总是2的n次方?这样设计的意义是什么?

当length总是2的n次方时,h& (length-1)运算等价于对length取模,也就是h%length,但是&比%具有更高的效率。

扩容后,不需要重新计算索引位置,只需要看看原来的hash值新增的那个bit是1还是0就好了,是0的话索引没变,是1的话索引变成“原索引+oldCap”,

简单说说根据key获取哈希桶数组索引位置?

取key的hashCode值 h = key.hashCode()

高位运算  h ^ (h >>> 16)

取模运算 h & (length-1);

参考:http://www.importnew.com/20386.html

最新文章

  1. FileUtil(from logparser)
  2. js手风琴
  3. rtc关机闹钟2 Alarm manager
  4. java Unicode转UTF-8代码
  5. java android 访问DELPHI 的DATASNAP
  6. html元素拖拽
  7. 动态代理 Proxy InvocationHandler
  8. Tcl语言笔记之二
  9. js修改样式表规则
  10. 【数论&#183;欧拉函数】SDOI2008仪仗队
  11. 快速比较 Kafka 与 Message Queue 的区别
  12. Linker Scripts3--简单的链接脚本命令1
  13. 在Visual Studio 2017中安装bower
  14. Ubuntu 16.04 安装Mysql数据库
  15. JFace TableViewer性能改善 -- 使用VirtualTable
  16. Ubuntu下自定义调整CPU工作频率(用于省电或提高性能都好用)
  17. Python(多进程multiprocessing模块)
  18. Java 日期加减
  19. 程序集里包含多个版本dll引用 ,强制低版本到制定版本dll引用
  20. [BZOJ1584]Cleaning Up 打扫卫生

热门文章

  1. intval — 获取变量的整数值
  2. 3、Linux连接oracle
  3. python安装media报错
  4. MVC 验证规则扩展(当RoleID 属性值为A,B 时,Email 属性必填)
  5. Oauth2手册 第一章
  6. php在laravel中使用自定义的Common类
  7. SpringCloud启动类指定扫描包路径
  8. yolo v2使用总结
  9. 图解Tomcat
  10. 使用腾讯地图和js,html实现地理位置的获取