为什么HashSet里value不是null?
2023-04-18 12:41:20 时间
最近面试,遇到一些关于 HashSet 的不寻常的八股
HashSet底层的value为啥不是一个 null呢,效率不是更高,还省得创建对象了?
那我们先来看下,这个 value 何时会被用到呢?
HashSet#add
直接调用的HashMap#put
若HashMap#put:
- 成功,则返回null
- 失败,说明key已存在,就返回该key的value
综上,若底层hashmap的value维护的是null,则 HashMap#put 成功或失败都会返回null,则 HashSet#add 每次返回值都是true,就无法确认add是否成功了。
HashSet#remove
HashSet的remove依旧直接使用HashMap#remove
HashMap#remove会返回value,所以若底层value都存null,就无法区分是否移除成功。
相关文章
- python socket模块是怎么使用?
- python tornado如何更改代码?
- 【Win 10 应用开发】三维变换
- 【Win 10 应用开发】透视效果
- 【Win 10 应用开发】加载外部的 srt 字幕
- 【Win 10 应用开发】分析 URI 中的查询字符串
- C++读取UTF-8及GBK系列的文本方法及原理
- 简单的DC-4靶机渗透实战
- 【Win 10 应用开发】TCP通信过程
- STL源码解析--vector
- 【Win 10 应用开发】文件读写的三种方案
- C++指针详解
- 【Win 10 应用开发】在后台进行多媒体转码
- 【Win 10 应用开发】多媒体转码
- 【Win 10 应用开发】获取本机的IP地址
- 算法题:切木头
- 实施固定资产管理系统对企业有什么好处?
- 【Win 10应用开发】响应系统回退键的导航事件
- 编写Windows服务疑问2:探索服务与安装器的关系
- 机器人相关学术速递[11.24]