繁体   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