为什么HashSet里value不是null?

简介: 为什么HashSet里value不是null?

最近面试,遇到一些关于 HashSet 的不寻常的八股

image.png


HashSet底层的value为啥不是一个 null呢,效率不是更高,还省得创建对象了?


image.png


那我们先来看下,这个 value 何时会被用到呢?

image.png

HashSet#add

image.png


直接调用的HashMap#put


image.png



若HashMap#put:

  • 成功,则返回null
  • 失败,说明key已存在,就返回该key的value


image.png




综上,若底层hashmap的value维护的是null,则 HashMap#put 成功或失败都会返回null,则 HashSet#add 每次返回值都是true,就无法确认add是否成功了。

HashSet#remove


image.png



HashSet的remove依旧直接使用HashMap#remove


image.png



HashMap#remove会返回value,所以若底层value都存null,就无法区分是否移除成功。

目录
相关文章
|
1月前
|
存储 开发者
HashMap和Hashtable的key和value可以为null吗,ConcurrentHashMap呢
HashMap的key可以为null,value也可以为null;Hashtable的key不允许为null,value也不能为null;ConcurrentHashMap的key不允许为null
|
3月前
|
API 计算机视觉
Using ‘value‘ pointer is unsafe and deprecated. Use NULL as value pointer. To fetch trackbar value s
本文讨论了OpenCV中使用`createTrackbar`时遇到的"Using ‘value’ pointer is unsafe and deprecated"警告,并提供了通过设置空指针或使用回调函数来解决这个问题的方法。
Using ‘value‘ pointer is unsafe and deprecated. Use NULL as value pointer. To fetch trackbar value s
|
3月前
解决微软云Azure Function运行报错-Value cannot be null. (Parameter ‘provider‘)
解决微软云Azure Function运行报错-Value cannot be null. (Parameter ‘provider‘)
80 4
|
3月前
|
C++ Python
【Azure 应用服务】Azure Function Python函数部署到Azure后遇见 Value cannot be null. (Parameter 'receiverConnectionString') 错误
【Azure 应用服务】Azure Function Python函数部署到Azure后遇见 Value cannot be null. (Parameter 'receiverConnectionString') 错误
|
3月前
|
JavaScript 前端开发 C++
【Azure Function】调试 VS Code Javascript Function本地不能运行,报错 Value cannot be null. (Parameter 'provider')问题
【Azure Function】调试 VS Code Javascript Function本地不能运行,报错 Value cannot be null. (Parameter 'provider')问题
|
6月前
|
PHP
Trying to access array offset on value of type null
你就可以避免在null值上尝试访问数组偏移量的错误。 总的来说,当你遇到这个错误时,你应该回顾你的代码,确保在尝试访问数组偏移量之前,相关的变量已经被正确地初始化为一个数组,并且不是null。
1707 4
|
JavaScript API
【Vue】Cannot set reactive property on undefined,null,or primitive value:undefined
【Vue】Cannot set reactive property on undefined,null,or primitive value:undefined
286 0
|
6月前
键值的 key 和 value 允许为null吗
键值的 key 和 value 允许为null吗
|
11月前
|
存储
HashMap HashTable ConcurrentMap 中key value是否可以为null
HashMap HashTable ConcurrentMap 中key value是否可以为null
74 0