[英]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.