理解HashSet里為什么value不是null
最近面試,遇到一些關(guān)于 HashSet 的不尋常的八股

HashSet底層的value為啥不是一個(gè) null呢,效率不是更高,還省得創(chuàng)建對(duì)象了?

那我們先來(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ū)分是否移除成功。
到此這篇關(guān)于理解HashSet里為什么value不是null的文章就介紹到這了,更多相關(guān)Java HashSet內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 使用線程池執(zhí)行多個(gè)任務(wù)的示例
這篇文章主要介紹了Java 使用線程池執(zhí)行多個(gè)任務(wù)的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-03-03
一篇文章帶你學(xué)習(xí)JAVA MyBatis底層原理
近來(lái)想寫(xiě)一個(gè)mybatis的分頁(yè)插件,但是在寫(xiě)插件之前肯定要了解一下mybatis具體的工作原理吧,本文就詳細(xì)總結(jié)了MyBatis工作原理,,需要的朋友可以參考下2021-09-09
使用Servlet Filter實(shí)現(xiàn)系統(tǒng)登錄權(quán)限
這篇文章主要為大家詳細(xì)介紹了使用Servlet Filter實(shí)現(xiàn)系統(tǒng)登錄權(quán)限,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
springboot整合flowable框架入門(mén)步驟
最近工作中有用到工作流的開(kāi)發(fā),引入了flowable工作流框架,在此記錄一下springboot整合flowable工作流框架的過(guò)程,感興趣的朋友一起看看吧2022-04-04
springboot+Oauth2實(shí)現(xiàn)自定義AuthenticationManager和認(rèn)證path
本篇文章主要介紹了springboot+Oauth2實(shí)現(xiàn)自定義AuthenticationManager和認(rèn)證path,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
Java Swing中的文本區(qū)(JTextArea)實(shí)現(xiàn)換行保存到文件的幾個(gè)方法
這篇文章主要介紹了Java Swing中的文本區(qū)(JTextArea)實(shí)現(xiàn)換行保存到文件的幾個(gè)方法,本文給出了4種方法,需要的朋友可以參考下2014-10-10

