理解HashSet里為什么value不是null
最近面試,遇到一些關于 HashSet 的不尋常的八股
HashSet底層的value為啥不是一個 null呢,效率不是更高,還省得創(chuàng)建對象了?
那我們先來看下,這個 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,就無法區(qū)分是否移除成功。
到此這篇關于理解HashSet里為什么value不是null的文章就介紹到這了,更多相關Java HashSet內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用Servlet Filter實現(xiàn)系統(tǒng)登錄權限
這篇文章主要為大家詳細介紹了使用Servlet Filter實現(xiàn)系統(tǒng)登錄權限,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-10-10springboot+Oauth2實現(xiàn)自定義AuthenticationManager和認證path
本篇文章主要介紹了springboot+Oauth2實現(xiàn)自定義AuthenticationManager和認證path,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09Java Swing中的文本區(qū)(JTextArea)實現(xiàn)換行保存到文件的幾個方法
這篇文章主要介紹了Java Swing中的文本區(qū)(JTextArea)實現(xiàn)換行保存到文件的幾個方法,本文給出了4種方法,需要的朋友可以參考下2014-10-10