簡體   English   中英

Java Hashtable中的Set keys()和Set keyset()之間有什么區別?

[英]What is the difference between Set keys() and Set keyset() in Hashtable in Java?

我正在以下網站上學習Collection Framework: http : //way2java.com/collections/hashtable-about/ 閱讀完Hashtable所有方法后,我看到了兩種訪問表鍵的方法:

  1. Set keys() :返回包含所有鍵的Set對象

  2. Set keySet() :返回一個Set對象,其中包含Hashtable所有鍵。 相似之處在於HashtableSet不允許重復。 Set添加和刪​​除元素也反映在Hashtable

它們都返回一個Set對象。 我看不出它們之間的區別。 有人可以告訴我嗎?

keys()不返回Set ,而是返回Enumeration<K>

Hashtable是一個非常舊的類,不再建議使用。 它由HashMapConcurrentHashMap 代替。 它在JCF之前就已經存在,因此,開始時獲取密鑰的標准方法是通過Enumeration -用於遍歷對象集合的原始Java接口。

然后是Java 1.2和JCF 使用返回返回SetkeySet()方法(針對JCF引入keySet()Hashtable進行了Map界面的改裝。 出於傳統兼容性原因,保留了keys方法。 從新方法返回的Set實現了兩件事:

  1. 傳達意圖-強化了以下事實: Hashtable表的鍵是數學集
  2. 實現Iterable<T> ,它代替Enumerable<T>

Hashtable文檔中:

從Java 2平台v1.2開始,對該類進行了改進以實現Map接口,使其成為Java Collections Framework的成員。 與新的集合實現不同,哈希表是同步的。 如果不需要線程安全的實現,建議使用HashMap代替Hashtable。 如果需要線程安全的高度並發實現,則建議使用ConcurrentHashMap代替Hashtable。

Hashtable中的keys()方法實際上返回鍵的枚舉:

  Enumeration<K>    keys()

返回此哈希表中的鍵的枚舉。

Hashtable是一個古老的,過時的類,在Java 1.2(!)中引入標准集合框架之前,它已經存在於Java中,並且經過改進以遵守Map接口。

keys()存在於原始Hashtable並返回鍵的Enumaration keySet()Map接口中引入的一種更現代的方法,它返回一Set鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM