HashMap源码解析——构造方法
上篇博文列取了HashMap的关键属性,本篇主要看构造方法
HashMap的几个构造方法:
补充下
//加载因子
static final float DEFAULT_LOAD_FACTOR = 0.75f;
//容量
static final int MAXIMUM_CAPACITY = 1 << 30;
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);}public HashMap(Map<? extends K, ? extends V> m) {this.loadFactor = DEFAULT_LOAD_FACTOR;putMapEntries(m, false);}
我们可以看到在构造HashMap的时候如果我们指定了加载因子和初始容量的话就调用第一个构造方法,否则的话就是用默认的。默认初始容量为16,默认加载因子为0.75。
下面我们再看下构造方法中调用的tableSizeFor(initialCapacity);方法
/*** Returns a power of two size for the given target capacity.*/static final int tableSizeFor(int cap) {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;}
HashMap源码解析——构造方法相关推荐
- HashMap源码解析(JDK1.8)
HashMap源码解析(JDK1.8) 目录 定义 构造函数 数据结构 存储实现源码分析 删除操作源码分析 hashMap遍历和异常解析 1. 定义 HashMap实现了Map接口,继承Abstrac ...
- Java集合框架之三:HashMap源码解析
Java集合框架之三:HashMap源码解析 版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! HashMap在我们的工作中应用的非常广泛,在工作面试中也经常会被问到,对于这样一个重要的集 ...
- hashmap删除指定key_Java集合之HashMap源码解析(JDK8)
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景非常丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出 ...
- 通俗易懂Hashmap源码解析
Hashmap源码解析 一.Hashmap数据结构 哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value.哈希的思路很简单 ...
- 面试官系统精讲Java源码及大厂真题 - 08 HashMap 源码解析
08 HashMap 源码解析 自信和希望是青年的特权. --大仲马 引导语 HashMap 源码很长,面试的问题也非常多,但这些面试问题,基本都是从源码中衍生出来的,所以我们只需要弄清楚其底层实现原 ...
- 红黑树分析与JDK8中HashMap源码解析
红黑树分析与JDK8中HashMap源码解析 BST O(1), O(n), O(logn), O(nlogn) 的区别 红黑树-RBTree 插入数据 HashMap中红黑树的插入操作 HashMa ...
- 【Java深入研究】9、HashMap源码解析(jdk 1.8)
一.HashMap概述 HashMap是常用的Java集合之一,是基于哈希表的Map接口的实现.与HashTable主要区别为不支持同步和允许null作为key和value.由于HashMap不是线程 ...
- java容器三:HashMap源码解析
前言:Map接口 map是一个存储键值对的集合,实现了Map接口的主要类有以下几种 TreeMap:用红黑树实现 HashMap:数组和链表实现 HashTable:与HashMap类似,但是线程安全 ...
- HashMap源码解析
一.HashMap介绍 HashMap位于JDK自带jar包rt.jar的java.util目录下. HashMap是一个散列表,存储的内容是键值对<key,value>映射. HashM ...
最新文章
- C翻译汇编语言,[求助]求人帮忙把汇编语言程序翻译成C或者C++
- iOS 控件不显示的几点原因
- 标准CC++获取当前时间(毫秒级)
- hbase配置详解(转)
- 《Java特种兵》1.8 老A是在逆境中迎难而上者
- 华为Mate 40 Pro正面细节曝光:3D人脸识别+双孔曲面屏
- java构造方法 隐含三步_Java入门总结--------类和对象关系以及构造方法
- js技术要点---JS 获取网页源代码
- tidb 企业_TiDB,日均千万级数据存储方案选型
- 浅谈Js对象的概念、创建、调用、删除、修改!
- C 语言中的指针和内存泄漏
- Jnotify文件监控的用法以及Jar文件导入的方法
- Spring学习笔记之基础、IOC、DI(1)
- STM32串口下载程序
- 工业交换机的管理方式有哪些?
- 柴静采访剑桥大学校长乐思哲
- 局域网同步服务器系统时间,局域网中如何设置系统时间与服务器同步
- 动手学ocr·十讲--学习笔记一
- Python感知器算法
- uni-app系列(二):uniapp 项目引入 uView 并简单使用