[英]What is the difference between Set keys() and Set keyset() in Hashtable in Java?
我正在以下網站上學習Collection Framework: http : //way2java.com/collections/hashtable-about/ 。 閱讀完Hashtable
所有方法后,我看到了兩種訪問表鍵的方法:
Set keys()
:返回包含所有鍵的Set
對象
Set keySet()
:返回一個Set
對象,其中包含Hashtable
所有鍵。 相似之處在於Hashtable
和Set
不允許重復。 在Set
添加和刪除元素也反映在Hashtable
它們都返回一個Set
對象。 我看不出它們之間的區別。 有人可以告訴我嗎?
keys()
不返回Set
,而是返回Enumeration<K>
。
Hashtable
是一個非常舊的類,不再建議使用。 它由HashMap
或ConcurrentHashMap
†代替。 它在JCF之前就已經存在,因此,開始時獲取密鑰的標准方法是通過Enumeration
-用於遍歷對象集合的原始Java接口。
然后是Java 1.2和JCF 。 使用返回返回Set
的keySet()
方法(針對JCF引入keySet()
對Hashtable
進行了Map
界面的改裝。 出於傳統兼容性原因,保留了keys
方法。 從新方法返回的Set
實現了兩件事:
Hashtable
表的鍵是數學集 Iterable<T>
,它代替Enumerable<T>
†從Hashtable
文檔中:
從Java 2平台v1.2開始,對該類進行了改進以實現Map接口,使其成為Java Collections Framework的成員。 與新的集合實現不同,哈希表是同步的。 如果不需要線程安全的實現,建議使用HashMap代替Hashtable。 如果需要線程安全的高度並發實現,則建議使用ConcurrentHashMap代替Hashtable。
Hashtable
是一個古老的,過時的類,在Java 1.2(!)中引入標准集合框架之前,它已經存在於Java中,並且經過改進以遵守Map
接口。
keys()
存在於原始Hashtable
並返回鍵的Enumaration
。 keySet()
是Map
接口中引入的一種更現代的方法,它返回一Set
鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.