在Java中,EnumMaps具有持续的访问时间,因为它们可以使用枚举的序数值作为索引来实现。
如果我有一个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[] { "α", "β", "γ" };
我在documentation找不到方法。为什么缺少这样的功能?
答案 0 :(得分:2)
您可以通过the Map.values()
method(请记住,EnumMap
只是一个专门的Map
):
String[] abcarray = abc.values().toArray(new String[abc.size()]);
对于原因为什么不存在这样的方法,我们只能推测。
但是在集合框架中有两个共同的主题,它们在这里发挥作用:
答案 1 :(得分:2)
这有点抽象......试试:
String[] abcarray = abc.values().toArray(new String[abc.size()]);