當前位置:網站首頁>為什麼HashSet裏的value不是null?

為什麼HashSet裏的value不是null?

2021-08-20 05:10:40 JavaEdge.

  點擊上方“JavaEdge”,關注公眾號

設為“星標”,好文章不錯過!

最近面試,遇到一些關於 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,就無法區分是否移除成功。

往期推薦

擁抱Kubernetes,再見了Spring Cloud

百度二面:一個線程OOM了,其它線程還能運行嗎?

這一次徹底搞懂JDK動態代理

Iterator迭代器到底是什麼?

目前交流群已有 800+人,旨在促進技術交流,可關注公眾號添加筆者微信邀請進群

喜歡文章,點個“在看、點贊、分享”素質三連支持一下~

版權聲明
本文為[JavaEdge.]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2021/08/20210820051039796r.html

隨機推薦