开发者社区> 问答> 正文

HashMap 容量初始化流程是什么

HashMap 指定容量会创建指定大小的map吗

展开
收起
一人吃饱,全家不饿 2020-12-27 18:31:24 988 0
1 条回答
写回答
取消 提交回答
  • HashMap 默认初始容量为16,若指定了初始容量,会按照下面代码块计算得到第一个大于等于指定容量的 2 的幂,将其作为初始容量。

    // 通过位运算计算容量大小
    int n = cap - 1;
    n |= n >>> 1;
    n |= n >>> 2;
    n |= n >>> 4;
    n |= n >>> 8;
    n |= n >>> 16;
    return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
    
    2020-12-27 18:32:26
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载