摘要:棧長看了下,確實是添加的,最早的一個集合類,這樣也說得過去。那為什么不在后面的版本中修復(fù)它呢可能是為了考慮兼容使用老版本的系統(tǒng)吧。棧長又去證實了下,沒有和這個類,所有開頭的并發(fā)類和接口都在這里了。
前幾天在寫《HashMap 和 Hashtable 的 6 個區(qū)別》這篇文章的時候,差點把 Hashtable 寫成了 HashTable,后來看源碼證實了是:Hashtable,小寫的 "t"able,不符合駝峰命名規(guī)則。
什么是駝峰命名規(guī)則,來看下面的關(guān)鍵字:
HashMap
ArrayList
ConcurrentHashMap
簡單來說就是,標(biāo)識符的每個單詞首字母必須大寫,看起來像是駝峰的形狀。
當(dāng)時就很好奇,Hashtable 為什么不是 HashTable 呢?作為一名初級的 Java 程序員都應(yīng)該知道的基本的駝峰命名規(guī)則,為什么 JDK 代碼里面還有這種不規(guī)范的命名呢?
我想大家應(yīng)該都比較好奇,我特意去查了下資料,沒有查到官方的說法,不過在 stackoverflow 上看到了同樣的這個問題。
原貼如下:
https://stackoverflow.com/que...
最佳答案是:
Hashtable was created in Java v1. The consistent naming conventions for collections were established later, in Java2, when the other classes were published as part of the brand new Java Collection Framework.Which btw made Hashtable obsolete, so it should not be used in new code.
Hope that helps.
意思就是:
Hashtable 是在 Java 1.0 的時候創(chuàng)建的,而集合的統(tǒng)一規(guī)范命名是在后來的 Java 2 開始約定的,當(dāng)時其他一部分集合類的發(fā)布構(gòu)成了新的集合框架。順便說一下,這樣就使得 Hashtable 過時了,所以不應(yīng)該在新代碼中繼續(xù)使用它。
棧長看了下,Hashtable 確實是 JDK1.0 添加的,最早的一個集合類,這樣也說得過去。那為什么不在后面的 JDK 版本中修復(fù)它呢?可能是為了考慮兼容使用 JDK 老版本的系統(tǒng)吧。所以就將錯就錯封存在了 JDK,直到現(xiàn)在 JDK 11 了也還沒有修復(fù)或者考慮刪除它。
另外,關(guān)于《HashMap 和 Hashtable 的 6 個區(qū)別》,有人留言說可以使用 currenthashtable。
棧長又去證實了下,沒有 currenthashtable 和 concurrenthashtable 這個類,所有 concurrent* 開頭的并發(fā)類和接口都在這里了。
好了,關(guān)于 Hashtable 的迷惑就此全都解開了。
所有 Java JVM、多線程、集合、新特性等系列文章請在微信公眾號 “Java技術(shù)棧” 后臺回復(fù)關(guān)鍵字:java,后續(xù)也會不斷更新。
有收獲?轉(zhuǎn)發(fā)給更多的人吧!
本文原創(chuàng)首發(fā)于微信公眾號:Java技術(shù)棧(id:javastack),關(guān)注公眾號在后臺回復(fù) "java" 可獲取更多,轉(zhuǎn)載請原樣保留本信息。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/72624.html
摘要:線程安全是線程安全的,不是線程安全的。是添加的,貌似沒人用過這個,棧長我也沒用過。。最后一點有幾個人知道知道的給棧長點個贊回應(yīng)一下,不知道的有收獲的也點一個贊支持一下吧。 HashMap 和 Hashtable 是 Java 開發(fā)程序員必須要掌握的,也是在各種 Java 面試場合中必須會問到的。 但你對這兩者的區(qū)別了解有多少呢? 現(xiàn)在,棧長我給大家總結(jié)一下,或許有你不明朗的地方,在棧長...
摘要:什么是散列表和散列函數(shù)哈希表,也叫散列表,是根據(jù)關(guān)鍵碼值而直接進(jìn)行訪問的數(shù)據(jù)結(jié)構(gòu)。根據(jù)鍵值從散列表中移除值。請實現(xiàn)散列表將和存在一個對象中即可定義一個包含和屬性的類并分配到散列表。 showImg(https://segmentfault.com/img/remote/1460000019005270); 這是第五周的練習(xí)題,上周忘記發(fā)啦,這周是復(fù)習(xí) Dictionary 和 Hash...
摘要:什么是散列表和散列函數(shù)哈希表,也叫散列表,是根據(jù)關(guān)鍵碼值而直接進(jìn)行訪問的數(shù)據(jù)結(jié)構(gòu)。將字典的所有鍵名以數(shù)組的形式返回。根據(jù)鍵值從散列表中移除值。這是第五周的練習(xí)題,上周忘記發(fā)啦,這周是復(fù)習(xí) Dictionary 和 HashTable。 下面是之前分享的鏈接: 1.每周一練 之 數(shù)據(jù)結(jié)構(gòu)與算法(Stack) 2.每周一練 之 數(shù)據(jù)結(jié)構(gòu)與算法(LinkedList) 3.每周一練 之 數(shù)據(jù)結(jié)構(gòu)...
摘要:再最壞的情況下,鏈表查找的時間復(fù)雜度為而紅黑樹一直是這樣會提高的效率。中的中定義了一個變量,當(dāng)節(jié)點個數(shù)時,將采用紅黑樹存儲參考資料和的區(qū)別和的區(qū)別 HashMap中的幾個重要變量 默認(rèn)初始容量,必須是2的n次方 static final int DEFAULT_INITIAL_CAPACITY = 16; 最大容量,當(dāng)通過構(gòu)造方法傳入的容量比它還大時,就用這個最大容量,必須是2的n...
摘要:底層的實現(xiàn)有兩個非常重要的結(jié)構(gòu)分別是和。簡單來說就是哈希表的結(jié)構(gòu)維護(hù)了哈希表中插入元素的先后順序,哈希表結(jié)構(gòu)維護(hù)了整個哈希表的頭和尾。在操作哈希表的過程中始終保持預(yù)算之間的關(guān)系。 HashTable對PHP來說是一種非常重要的數(shù)據(jù)結(jié)構(gòu)。很多PHP的內(nèi)部實現(xiàn)(變量的作用域,函數(shù)表,類的屬性、方法,數(shù)組)就是通過HashTable來實現(xiàn)的。最近了解了一下PHP底層HashTable的實現(xiàn)。...
閱讀 2908·2021-11-25 09:43
閱讀 2328·2021-11-24 09:39
閱讀 2717·2021-09-23 11:51
閱讀 1407·2021-09-07 10:11
閱讀 1455·2019-08-27 10:52
閱讀 1938·2019-08-26 12:13
閱讀 3359·2019-08-26 11:57
閱讀 1399·2019-08-26 11:31