据我了解,似乎没有直接获取a Enumeration的键的直接方法HashMap。我只能得到一个keySet()。从中Set我可以得到一个,Iterator但一个Iterator似乎不同于一个Enumeration。
Enumeration
HashMap
keySet()
Set
Iterator
Enumeration从a的键直接获取a的最佳和最有效的方法是HashMap什么?
背景:我正在实现自己的ResourceBundle(=> getKeys()方法),并且必须提供/实现一种返回所有键的枚举的方法。但是我的实现是基于A的,HashMap因此我需要以某种方式找出如何在这两种“迭代器/枚举器”技术之间进行最佳转换。
getKeys()
Apache commons- collections有一个适配器,可以Iterator像一样使用Enumeration。看一下IteratorEnumeration。
使Iterator实例看起来像是Enumeration实例的适配器
简而言之,您可以执行以下操作:
Enumeration enumeration = new IteratorEnumeration(hashMap.keySet().iterator());
或者,如果您(出于某种原因)不想包括commons-collection,则可以自己实现此适配器。这很容易- 只需实现实现Enumeration,将Iteratorin 传递给构造函数,然后在每次调用和时hasMoreElements(),nextElement()都在基础上调用hasNext()and 。next()``Iterator
hasMoreElements()
nextElement()
hasNext()
next()``Iterator
如果您Enumeration因某些API合同而被迫使用(我假设是这样),请使用此选项。否则使用Iterator-这是推荐的选项。