久久综合九色综合97婷婷-美女视频黄频a免费-精品日本一区二区三区在线观看-日韩中文无码有码免费视频-亚洲中文字幕无码专区-扒开双腿疯狂进出爽爽爽动态照片-国产乱理伦片在线观看夜-高清极品美女毛茸茸-欧美寡妇性猛交XXX-国产亚洲精品99在线播放-日韩美女毛片又爽又大毛片,99久久久无码国产精品9,国产成a人片在线观看视频下载,欧美疯狂xxxx吞精视频

有趣生活

當(dāng)前位置:首頁>職場>java 面試hashmap(java中為什么HashTable的K-V不能是null)

java 面試hashmap(java中為什么HashTable的K-V不能是null)

發(fā)布時(shí)間:2024-01-24閱讀(13)

導(dǎo)讀HashMap中的key-value可以是null,為什么Hashtable和ConcurrentHashMap中的不可以是null呢?,今天小編就來聊一聊....

HashMap中的key-value可以是null,為什么Hashtable和ConcurrentHashMap中的不可以是null呢?,今天小編就來聊一聊關(guān)于java 面試hashmap?接下來我們就一起去研究一下吧!

java 面試hashmap(java中為什么HashTable的K-V不能是null)

java 面試hashmap

問題描述

HashMap中的key-value可以是null,為什么Hashtable和ConcurrentHashMap中的不可以是null呢?

思考

這個(gè)問題還要從HashMap和HashTable的區(qū)別來說,HashTable內(nèi)的方法是同步的,而HashMap不是;

所以一般來講,HashMap不是線程安全的,一般只用于單線程中;而HashTable則往往用于多線程中;

在允許key - value為null的情況下,考慮下面一個(gè)場景:

map.get(key) 的返回結(jié)果是null,那么是因?yàn)椴淮嬖趯?duì)應(yīng)的key是null呢,還是key對(duì)應(yīng)的value就是null;

對(duì)于單線程來講,這個(gè)問題是可以解決的,通過map.contains(key)就可以判斷,但是對(duì)于多線程來講,要解決這個(gè)問題就很復(fù)雜了,必須由外部保證contains 與 get操作的原子性,正是出于對(duì)這個(gè)問題考慮,所以不允許value為null;(實(shí)際上HashTable中并沒有提供contains方法,也是因?yàn)檫@個(gè)原因)

那么為什么key也不能是null呢?

由于null不是對(duì)象,因此不能在其上調(diào)用.equals()或.hashCode(),因此Hashtable無法將其計(jì)算哈希值以用作鍵。但是HashMap對(duì)此做了特殊處理;

小結(jié)

HashTable是很早的一個(gè)類了,JDK已經(jīng)并不推薦使用;

在并發(fā)場景下,更建議使用ConcrrentHashMap

TAGS標(biāo)簽:  java  面試  hashmap  為什么  java 面試has  hmap(java中

歡迎分享轉(zhuǎn)載→http://www.avcorse.com/read-230920.html

Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號(hào)-5 TXT地圖HTML地圖XML地圖