初始大小:调用无参构造函数时默认的容量 初始大小:调用无参构造函数时默认的容量 初始大小:调用无参构造函数时默认的容量 加载因子:超过 (当前容量*加载因子) 时会进行扩容 扩容因子:扩容时增加的容量为 (当前容量*扩容因子) 容器 初始容量 加载因子 扩容因子ArrayList: 10 1 0.5 ...
分类:
其他好文 时间:
2017-10-14 18:19:09
阅读次数:
181
这里要讨论这些常用的默认初始容量和扩容的原因是: 当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低。 加载因子的系数小于等于1,意指 即当 元素个数 超过 容 ...
分类:
其他好文 时间:
2017-09-21 20:56:45
阅读次数:
127
首先,这三个概念说下。初始大小,就是创建时可容纳的默认元素个数;加载因子,表示某个阀值,用0~1之间的小数来表示,当已有元素占比达到这个阀值后,底层将进行扩容操作;扩容方式,即指定每次扩容后的大小的规则,比如翻倍等。 当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重 ...
分类:
其他好文 时间:
2017-08-13 01:17:39
阅读次数:
271
对于Java中的各种集合类,根据底层的具体实现,小结了一下大致有3种扩容的方式: 1、对于以散列表为底层数据结构实现的,(譬如hashset,hashmap,hashtable等),扩容方式为当链表数组的非空元素除以数组大小超过加载因子时, 链表数组长度变大(乘以2+1),然后进行重新散列。 2、对 ...
分类:
编程语言 时间:
2017-08-03 22:07:08
阅读次数:
392
2017-07-31 19:36:00 一、简介 1、HashMap作用及使用场景 HashMap利用数组+单向链表的方式,实现了key-value型数据的存储功能。HashMap的size永远是2^x的值,主要是为了更加均衡的使用数组位置。 2、存储key-value型数据的数据结构 如下代码,H ...
分类:
编程语言 时间:
2017-07-31 23:00:26
阅读次数:
252
新入公司,阅读代码的时候发现了一行代码,为 对于这个括号里面的1不能理解,于是查了资料,大概了解了。 解释如下:这个1被称为加载因子。 API: 加载因子越高 空间利用率提高了 但是查询时间 和添加时间增加hashmap 是这样存的先利用hashcode 找到需要存的地方但是 存的地方肯定是有限的 ...
分类:
其他好文 时间:
2017-07-10 20:10:15
阅读次数:
573
HashMap: *Map接口:采用是键值对的方式存放数据。无序 *常见的实现类: *--HashMap:基于哈希表的 Map 接口的实现。 *常用的构造方法: * HashMap()构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap。 * HashMap(int ...
分类:
编程语言 时间:
2017-06-14 16:29:56
阅读次数:
159
public HashMap() { this.loadFactor = DEFAULT_LOAD_FACTOR; //this.loadFactor为加载因子,其值为默认的加载因子常量:DEFAULT_LOAD_FACTOR的值,即0.75 threshold = (int)(DEFAULT_IN ...
分类:
其他好文 时间:
2017-05-19 10:05:16
阅读次数:
212
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模 ...
分类:
编程语言 时间:
2017-04-24 15:30:59
阅读次数:
177
*Map接口不是Collection接口的子接口 *Map存放数据的方式采用键值对的方式,类似与生活中目录(键)和内容(值) *常见的实现类: * HashMap**:采用键-值对的方式进行存放. * 键(键的集合是就是set集合):唯一,无序,如果键重复,将发生覆盖 * 值:无序 不唯一(Coll ...
分类:
其他好文 时间:
2017-04-21 21:38:41
阅读次数:
163