最近面試,遇到一些關于 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,就無法區分是否移除成功。
到此這篇關于理解HashSet里為什么value不是null的文章就介紹到這了,更多相關Java HashSet內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/qq_33589510/article/details/119812862