您如何在Java中使用enumMap?我想使用enumMap来获取从0到n(其中n是大小)的常量命名值。但是我不理解oracle站点> EnumMap上的描述。

我试图在这里用一个

package myPackage;

import java.util.EnumMap;

public class Main{

    public static enum Value{
        VALUE_ONE, VALUE_TWO, SIZE
    }

    public static EnumMap<Value, Integer> 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);吗?

最佳答案

请勿尝试将大小存储在枚举中,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<Value, Integer> x = new EnumMap<>(Value.class);

如果您要做的只是按索引检索枚举值,则根本不需要EnumMap。这仅在尝试分配任意值时有用。
您可以使用values方法按索引获取任何枚举:
Value.values()[INDEX]

关于java - 如何在Java中使用enumMap,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26357851/

10-13 07:17