為什么HashSet里的value不是null?
點(diǎn)擊上方“JavaEdge”,關(guān)注公眾號(hào)
最近面試,遇到一些關(guān)于 HashSet 的不尋常面試題:

HashSet底層的value為啥不是個(gè) null,效率不是會(huì)更高,還省得創(chuàng)建對(duì)象了嗎?
要弄清這個(gè)問(wèn)題,我們先來(lái)看下,這個(gè) value 何時(shí)會(huì)被用到呢?


HashSet#add


直接調(diào)用的HashMap#put
若HashMap#put:
成功,則返回null
失敗,說(shuō)明key已存在,就返回該key的value

綜上,若底層hashmap的value維護(hù)的是null,則 HashMap#put 成功或失敗都會(huì)返回null,則 HashSet#add 每次返回值都是true,就無(wú)法確認(rèn)add是否成功了。


HashSet#remove



HashSet的remove依舊直接使用HashMap#remove
HashMap#remove會(huì)返回value,所以若底層value都存null,就無(wú)法區(qū)分是否移除成功。
往期推薦
目前交流群已有 800+人,旨在促進(jìn)技術(shù)交流,可關(guān)注公眾號(hào)添加筆者微信邀請(qǐng)進(jìn)群
喜歡文章,點(diǎn)個(gè)“在看、點(diǎn)贊、分享”素質(zhì)三連支持一下~
評(píng)論
圖片
表情
