**
HashMap父类AbstractMap粗略了解:
**
为什么要了解AbstractMap,因为HashMap是AbstractMap的子类,承前启后
建议源码和文章一起看,看不懂英文的推荐使用网易有道词典
这个类提供了Map框架的实现接口,以最小化实现接口所需要的工作
实现一个不可修改的映射,程序员只需要实现它的子类,并未entrySet方法提供一个实现方案
Map中有个内接口,用于存储数据,AbstractMap中的entrySet中的Entry类实现了该接口,并且entry使用的是Set存储,所有map是无序的
AbstractMap不支持添加或者删除方法及其迭代器
方法实现及作用:
基本操作
entrySet(): 数据集,未实现
size():数据集的长度
isEmpty():判断entrySet()的size()是否等于0
containsValue(V):iterator迭代entrySet(),判断value是否存在,返回布尔类型
containsKey(K):iterator迭代entrySet(),判断key是否存在,返回布尔类型
get(K):iterator迭代的方式判断key是否存在,不存在返回null
修改操作
put(K,V):添加entry,未实现
remove(K):删除entry未实现
批量操作
putAll(map):遍历map的entrySet()进行put操作
clear():entrySet()清除所有entry
视图
keySet():返回AbstractSet的子类,使用·基本操作·覆盖AbstractSet的iteratoc()、size()、isEmpty()、clear()、contains();保证了key的唯一
values():返回AbstractCollection的子类,使用·基本操作·覆盖AbstractSet的iteratoc()、size()、isEmpty()、clear()、contains();value可以重复
比较hash值
hashCode():返回entrySet()中所有的entry相加的hash值
其他
Transient:用于修饰变量,当对象被序列化时(写入字节序列到目标文件)时,transient阻止实例中那些用此关键字声明的变量持久化;当对象被反序列化时(从源文件读取字节序列进行重构),这样的实例变量值不会被持久化和恢复。例如,当反序列化对象——数据流(例如,文件)可能不存在时,原因是你的对象中存在类型为java.io.InputStream的变量,序列化时这些变量引用的输入流无法被打开。