如何在java中使用enumMap

你如何在java中使用enumMap? 我想使用enumMap来获取从0到n的常量命名值,其中n是size。 但我不明白oracle网站上的描述> EnumMap 。

我试着在这里使用一个

package myPackage; import java.util.EnumMap; public class Main{ public static enum Value{ VALUE_ONE, VALUE_TWO, SIZE } public static EnumMap x; public static void main(String[] args){ x.put(Value.VALUE_ONE, 0); x.put(Value.VALUE_TWO, 1); x.put(Value.SIZE, 2); int[] myArray = new int[SIZE]; } } 

这不起作用。 你怎么用enumMap?

没有x.put(Value.VALUE_ONE, 0);也有办法吗x.put(Value.VALUE_ONE, 0); 对于枚举中的每个元素?

不要尝试在枚举中存储大小, EnumMap有一个size方法。

 public static enum Value{ VALUE_ONE, VALUE_TWO } 

此外,枚举类型具有静态方法values ,可用于获取实例数组。 您可以使用它循环并将它们添加到EnumMap

 public static void main(String[] args){ for(int i = 0; i < Value.values().length ; i++) { x.put(Value.values()[i], i); } int[] myArray = new int[x.size()]; } 

您还需要确保初始化EnumMap否则您将出现NullPointerException

 public static EnumMap x = new EnumMap<>(Value.class); 

如果您要做的就是通过索引检索枚举值,那么您根本不需要EnumMap 。 这只有在您尝试分配任意值时才有用。 您可以使用values方法通过索引获取任何枚举:

 Value.values()[INDEX] 

您忘记在代码中初始化EnumMap。

您可以在x.put之前在main中初始化它,例如:

 x = new EnumMap(Value.class); 

并使用你的数组:

 int[] myArray = new int[x.get(Value.SIZE)]; 
 public static EnumMap x = new EnumMap(Value.class);