当前位置: 首页 > 面试题库 >

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

穆彬郁
2023-03-14
问题内容

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

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

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


问题答案:

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-这是推荐的选项。



 类似资料:
  • 本文向大家介绍Java获取枚举的值,包括了Java获取枚举的值的使用技巧和注意事项,需要的朋友参考一下 示例 每个枚举类都包含一个名为的隐式静态方法values()。此方法返回一个包含该枚举的所有值的数组。您可以使用此方法遍历值。重要的是要注意,此方法每次调用时都会返回一个新数组。 如果需要,Set也可以使用EnumSet.allOf(Day.class)。

  • 问题内容: 我定义了以下枚举 现在的印刷价值是 相反,我想打印枚举的值 要实现此功能可以做些什么? 问题答案: 您正在打印枚举 对象 。如果只想打印该属性,请使用该属性: 请参阅 对枚举成员及其属性 的 编程访问权限 部分 : 如果您有枚举成员并需要其名称或值: 如果只需要提供自定义字符串表示形式,则可以向枚举添加方法: 演示:

  • 是否可以使用枚举来定义键?(映射返回int String、Object。但这不是问题的一部分) 谢谢你的帮助。

  • 问题内容: 我遇到了这个问题,我不知道需要迭代其实际值的实际类型。 任何想法如何从enumValue中提取其可能的值? 问题答案:

  • 我应该工作,对吧?但它不是!!!!它告诉我dbValue可以转换为RelationActiveEnum...

  • 问题内容: 我有一个枚举,看起来像: 我有一个看起来像的测试班 输出为: 代替 我不确定这里出什么问题了吗?? 问题答案: 您需要 重写枚举的方法: