0

在 Java 中,EnumMap 具有恒定的访问时间,因为它们可以通过使用枚举的序数值作为索引的数组来实现。

如果我有 EnumMap 我怎样才能得到数组?

例子:

enum Abc { A, B, C };
EnumMap<Abc, String> abc = new EnumMap<Abc, String>(Abc.class);
abc.put(Abc.A, "α");
abc.put(Abc.B, "β");
abc.put(Abc.C, "γ");

String[] abcarray = ?;

变量abcarray应该包含与以这种方式初始化的相同:

String[] abcarray = new String[] { "α", "β", "γ" };

我在文档中找不到方法。为什么缺少这样的功能?

4

2 回答 2

2

您可以通过Map.values()方法(请记住, anEnumMap只是一个专门的Map):

String[] abcarray = abc.values().toArray(new String[abc.size()]);

至于为什么不存在这样的方法,我们只能推测。

但是集合框架中有两个共同的主题,在这里发挥作用:

  • 通过链接更简单的操作来允许更复杂的操作(这减少了需要实现的操作/方法的总数,同时保持选项可用)
  • 摆脱数组:一旦您进入“收藏区”,它们就没有真正的用处
于 2013-11-05T16:25:12.580 回答
2

它有点抽象......尝试:

String[] abcarray = abc.values().toArray(new String[abc.size()]);
于 2013-11-05T16:25:30.550 回答