2017年1月

HashMap 的实现原理

HashMap 概述

HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒定不变。

此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能。迭代collection视图所需要的时间与HashMap实例的“容量”(桶的数量)及其大小(键-值映射关系数)成比例。所以迭代性能很重要,则不要将初始容量设置得太高将加载因子设置得太低。

需要注意的是: Hashmap 不是同步的, 如果多个线程同时访问一个HashMap, 而其中至少一个线程从结构上(指添加或者删除一个或多个映射关系的任何操作)修改了,则必须保持外部同步,以防止对映射进行意外的非同步访问。

HashMap的数据结构
在Java编程语言中,最基本的结构就是两种,一个是数组,另一个是指针(引用), HashMap就是通过这连个数据结构进行实现。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。

hashmap1.jpg

- 阅读剩余部分 -