Java 如何从EnumMap获取数组?
在Java中,EnumMaps具有恒定的访问时间,因为它们可以通过使用enum的序数值作为索引的数组来实现 如果我有EnumMap,如何获取数组 例如:Java 如何从EnumMap获取数组?,java,enums,Java,Enums,在Java中,EnumMaps具有恒定的访问时间,因为它们可以通过使用enum的序数值作为索引的数组来实现 如果我有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[] ab
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 = ?;
我找不到一个方法。为什么缺少这样一个函数?您可以通过(请记住,EnumMap
只是一个专门的Map
):
至于为什么不存在这样的方法,我们只能猜测
但在集合框架中有两个共同的主题,它们在这里发挥作用:
- 通过链接更简单的操作来允许complexer操作(这减少了需要实现的操作/方法的总数,同时保持选项可用)
- 摆脱阵列:一旦进入“收集区”,它们就没有实际用途
EnumMap
只是一个专门的Map
):
至于为什么不存在这样的方法,我们只能猜测
但在集合框架中有两个共同的主题,它们在这里发挥作用:
- 通过链接更简单的操作来允许complexer操作(这减少了需要实现的操作/方法的总数,同时保持选项可用)
- 摆脱阵列:一旦进入“收集区”,它们就没有实际用途
- 它有点抽象。。。尝试:
String[] abcarray = abc.values().toArray(new String[abc.size()]);
它有点抽象。。。尝试:
String[] abcarray = abc.values().toArray(new String[abc.size()]);
这会为每个调用创建一个新数组吗?@ceving:如果按原样使用,则为“是”。但是你可以只传入一个你以前使用过的数组,而不是每次都重新创建一个(除非大小改变)。您无法(合法地)访问内部值数组,而且它也不会有您想要的内容(它将/可能大于abc.size(),并且具有“null”值)这会为每个调用创建一个新数组吗?@ceving:如果按原样使用,则是。但是你可以只传入一个你以前使用过的数组,而不是每次都重新创建一个(除非大小改变)。您无法(合法地)访问内部值数组,而且它也不会具有您想要的内容(它将/可能大于abc.size(),并且具有“null”值)
String[] abcarray = abc.values().toArray(new String[abc.size()]);