AbstractMap底层进攻

本文解析了HashMap的父类AbstractMap,介绍了其提供的Map框架实现,包括基本操作如entrySet、size、contains等方法,以及视图操作如keySet、values等。此外还探讨了AbstractMap的内部工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**

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的变量,序列化时这些变量引用的输入流无法被打开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值