博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HashMap源码阅读(1)-构造函数
阅读量:5839 次
发布时间:2019-06-18

本文共 1279 字,大约阅读时间需要 4 分钟。

hot3.png

1 在构造函数中,只是对成员变量赋值,并没有申请内存,初始化是lazy的。

2 如果已知需要放置很多元素,在构造时设置容量参数,避免resize,耗费性能。

static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // 默认初始数组大小是16个。static final int MAXIMUM_CAPACITY = 1 << 30; static final float DEFAULT_LOAD_FACTOR = 0.75f; // 负载因子默认是0.75,即 16*0.75=12个元素时,发生扩容。static final int TREEIFY_THRESHOLD = 8; // 链表转换为红黑树的节点阈值static final int MIN_TREEIFY_CAPACITY = 64;
public HashMap() {    this.loadFactor = DEFAULT_LOAD_FACTOR; // all other fields defaulted}public HashMap(int initialCapacity) {    this(initialCapacity, DEFAULT_LOAD_FACTOR);}public HashMap(int initialCapacity, float loadFactor) {    if (initialCapacity < 0)        throw new IllegalArgumentException("Illegal initial capacity: " +                                           initialCapacity);    if (initialCapacity > MAXIMUM_CAPACITY)        initialCapacity = MAXIMUM_CAPACITY;    if (loadFactor <= 0 || Float.isNaN(loadFactor))        throw new IllegalArgumentException("Illegal load factor: " +                                           loadFactor);    this.loadFactor = loadFactor;    this.threshold = tableSizeFor(initialCapacity);}// 支持通过已经存在的Map构造public HashMap(Map
 m) {    this.loadFactor = DEFAULT_LOAD_FACTOR;    putMapEntries(m, false);}

转载于:https://my.oschina.net/u/1537182/blog/658676

你可能感兴趣的文章
RocketMQ源码解析:Message拉取&消费(下)
查看>>
【重磅】Spring Boot 2.1.0 权威发布
查看>>
Microsoft 面试题 | 我能赢
查看>>
saiku+kettle整合(十六)合计
查看>>
vue-cli 3.0 下发布一个 TypeScript 组件
查看>>
从赋值看基本类型和引用类型的区别
查看>>
使用js开发数据库
查看>>
数据结构和算法javascript描述-字典(第7章)
查看>>
推荐一些造福独立开发者的第三方技术
查看>>
翻译连载 | 第 11 章:融会贯通 -《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
查看>>
JavaScript练习:表单联动
查看>>
我扒下了某音乐的
查看>>
Immutable.js 以及在 react+redux 项目中的实践
查看>>
一文带你看懂cookie,面试前端不用愁
查看>>
安卓数据库 greenDAO3 使用之一项目配置、增删改查及升级
查看>>
每天学习一点JVM之:JAVA内存区域浅析
查看>>
聊一聊随机数安全
查看>>
Java 基础(十三)线程——上
查看>>
使用CentOS7安装配置Jenkins
查看>>
007-Cobbler批量自动化部署Windows10和Server 2019及激活
查看>>