一尘不染

在Java中获取地图(HashMap)的枚举(用于键)?

java

据我了解,似乎没有直接获取a
Enumeration的键的直接方法HashMap。我只能得到一个keySet()。从中Set我可以得到一个,Iterator但一个Iterator似乎不同于一个Enumeration

Enumeration从a的键直接获取a的最佳和最有效的方法是HashMap什么?

背景:我正在实现自己的ResourceBundle(=>
getKeys()方法),并且必须提供/实现一种返回所有键的枚举的方法。但是我的实现是基于A的,HashMap因此我需要以某种方式找出如何在这两种“迭代器/枚举器”技术之间进行最佳转换。


阅读 325

收藏
2020-12-03

共1个答案

一尘不染

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

如果您Enumeration因某些API合同而被迫使用(我假设是这样),请使用此选项。否则使用Iterator-这是推荐的选项。

2020-12-03