java: HashMap面试题(JDK 8) |
您所在的位置:网站首页 › jdk的作用和分类 › java: HashMap面试题(JDK 8) |
java: HashMap面试题(JDK 8)
原创
wx62e0d796b5814 2023-03-25 01:04:55 ©著作权 文章标签 java 数据结构 链表 结点 数组 文章分类 Html/CSS 前端开发 ©著作权归作者所有:来自51CTO博客作者wx62e0d796b5814的原创作品,请联系作者获取转载授权,否则将追究法律责任一、HashMap默认装载因子是多少? 0.75二、调用构造方法的时候会创建Node数组吗? 不会三、元素的哈希值是怎么算出来的? static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); }通过元素的哈希码进行一定的位运算得到的 四、HashMap Node中的数据什么情况使用链表存储?什么时候用红黑树存储? 当某个Node中的链表长度大于8且数组长度大于64时才会转成红黑树存储, 否则使用链表存储五、当发生哈希冲突时如何处理? 如果哈希code相同,则新结点替换旧结点。 否则,如果Node是链表时,则把新结点插在链表的尾部六、什么时候扩容? 元素的数量大于数组大小(默认16)*装载因子(默认0.75)会扩容,扩容后的容量为原来的2倍。七、最大容量是多少? MAXIMUM_CAPACITY = 1 0) // initial capacity was placed in threshold newCap = oldThr; 这个语句,把新的容量设置为32。 当下次再进行扩容时,旧的容量已经大于0,将通过如下逻辑将容量和threshold翻倍 if (oldCap > 0) { if (oldCap >= MAXIMUM_CAPACITY) { threshold = Integer.MAX_VALUE; return oldTab; } else if ((newCap = oldCap = DEFAULT_INITIAL_CAPACITY) newThr = oldThr 赞 收藏 评论 分享 举报上一篇:jvm复习: 扩展类加载器目录里的文件必须是jar文件而不是.class文件 下一篇:Spring 6.0官方文档示例(14) Collection类型数据的注入 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |