创建一个数组,其中每个位置代表枚举元素

时间:2011-12-17 10:25:54

标签: java arrays enums

我有这门课。我会创建一个数组ex。 Categoria[] cat其中每个地方都由枚举类型的字母表示。例如cat[0=A], cat[1=B]等。我该怎么做?

public class Categoria {

public enum LetteraCategoria{

    A,B,C,D,E,F;

    public static String getVerbose(){
        return "";
    }
}

private LetteraCategoria categoria;

private Hashtable<String,Autovettura> listaauto;

public Categoria(LetteraCategoria categoria){

    this.categoria = categoria;

    listaauto = new Hashtable<String,Autovettura>();
}

public LetteraCategoria getCategoria() {

    return categoria;
}

public Hashtable<String, Autovettura> getListaauto() {

    return listaauto;
}


}

4 个答案:

答案 0 :(得分:4)

您可以尝试:

cat[LetteraCategoria.A.ordinal()]

答案 1 :(得分:1)

你的枚举

public enum LetteraCategoria{

    A,B,C,D,E,F;

    public static String getVerbose(){

        return "";
    }
}

你的数组

LetteraCategoria[] arr = new LetteraCategoria[3];
arr[0] = LetteraCategoria.A;
arr[1] = LetteraCategoria.B;
.
.

更好的方式

最好在枚举上使用ArrayList并使用values()方法,只需迭代结果并继续将其添加到List

答案 2 :(得分:1)

你的意思是用枚举索引的数组?如果是这样,您应该考虑使用EnumMap

Map<LetteraCategoria, Categoria> cat = new EnumMap<LetteraCategoria, Categoria>(LetteraCategoria.class);

然后,您可以访问类别cat.get(LetteraCategoria.A)

在内部,它的实现比普通的HashMap更有效。

答案 3 :(得分:0)

使用values()

final LetteraCategoria[] tmp = LetteraCategoria.values();

final String[] stringValues = new String[tmp.length];

for (int i = 0; i < tmp.length; i++)
    stringValues[i] = tmp[i].toString();