java 集合系列之 hashmap详细介绍(源码解析)和使用示例

java 集合系列之 hashmap详细介绍(源码解析)和使用示例

ID:17909834

大小:223.00 KB

页数:42页

时间:2018-09-09

java 集合系列之 hashmap详细介绍(源码解析)和使用示例_第1页
java 集合系列之 hashmap详细介绍(源码解析)和使用示例_第2页
java 集合系列之 hashmap详细介绍(源码解析)和使用示例_第3页
java 集合系列之 hashmap详细介绍(源码解析)和使用示例_第4页
java 集合系列之 hashmap详细介绍(源码解析)和使用示例_第5页
资源描述:

《java 集合系列之 hashmap详细介绍(源码解析)和使用示例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Java集合系列之HashMap详细介绍(源码解析)和使用示例概要这一章,我们对HashMap进行学习。我们先对HashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashMap。内容包括:第1部分HashMap介绍第2部分HashMap数据结构第3部分HashMap源码解析(基于JDK1.6.0_45)第3.1部分HashMap的“拉链法”相关内容第3.2部分HashMap的构造函数第3.3部分HashMap的主要对外接口第3.4部分HashMap实现的Cloneable接口第3

2、.5部分HashMap实现的Serializable接口第4部分HashMap遍历方式第5部分HashMap示例第1部分HashMap介绍HashMap简介HashMap是一个散列表,它存储的内容是键值对(key-value)映射。HashMap继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。HashMap的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。HashMa

3、p的实例有两个参数影响其性能:“初始容量”和“加载因子”。容量是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行rehash操作(即重建内部数据结构),从而哈希表将具有大约两倍的桶数。通常,默认加载因子是0.75,这是在时间和空间成本上寻求一种折衷。加载因子过高虽然减少了空间开销,但同时也增加了查询成本(在大多数HashMap类的操作中,包括get和put操作,都反映了

4、这一点)。在设置初始容量时应该考虑到映射中所需的条目数及其加载因子,以便最大限度地减少rehash操作次数。如果初始容量大于最大条目数除以加载因子,则不会发生rehash操作。HashMap的构造函数HashMap共有4个构造函数,如下:复制代码//默认构造函数。HashMap()//指定“容量大小”的构造函数HashMap(intcapacity)//指定“容量大小”和“加载因子”的构造函数HashMap(intcapacity,floatloadFactor)//包含“子Map”的构造函数Hash

5、Map(Mapmap)复制代码HashMap的API复制代码voidclear()Objectclone()booleancontainsKey(Objectkey)booleancontainsValue(Objectvalue)Set>entrySet()Vget(Objectkey)booleanisEmpty()SetkeySet()Vput(Kkey,Vvalue)voidputAll(Map

6、endsV>map)Vremove(Objectkey)intsize()Collectionvalues()复制代码第2部分HashMap数据结构HashMap的继承关系复制代码java.lang.Object↳java.util.AbstractMap↳java.util.HashMappublicclassHashMapextendsAbstractMapimplementsMap,Cloneable,Serializable{}复制代码从

7、图中可以看出:(01)HashMap继承于AbstractMap类,实现了Map接口。Map是"key-value键值对"接口,AbstractMap实现了"键值对"的通用函数接口。(02)HashMap是通过"拉链法"实现的哈希表。它包括几个重要的成员变量:table,size,threshold,loadFactor,modCount。  table是一个Entry[]数组类型,而Entry实际上就是一个单向链表。哈希表的"key-value键值对"都是存储在Entry数组中的。  size是Ha

8、shMap的大小,它是HashMap保存的键值对的数量。  threshold是HashMap的阈值,用于判断是否需要调整HashMap的容量。threshold的值="容量*加载因子",当HashMap中存储数据的数量达到threshold时,就需要将HashMap的容量加倍。  loadFactor就是加载因子。  modCount是用来实现fail-fast机制的。第3部分HashMap源码解析(基于JDK1.6.0_45)为了更了解HashMap

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。