【问题标题】:create an array in which every position represents an element of enum创建一个数组,其中每个位置都代表枚举的一个元素
【发布时间】:2011-12-17 10:25:54
【问题描述】:

我有这门课。我会创建一个数组 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;
}


}

【问题讨论】:

  • 不幸的是,没有人理解我要解释的内容。我会创建一个数组,其中每个位置都是对象类别,数组的每个位置都是 A、B、C、D、E、F

标签: java arrays enums


【解决方案1】:

你可以试试:

cat[LetteraCategoria.A.ordinal()]

【讨论】:

  • 也许是我正在寻找的想法
【解决方案2】:

你的枚举

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

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

    • 这将是最好的解决方案,不幸的是我只能使用一个数组
    【解决方案4】:

    使用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();
    

    【讨论】:

      猜你喜欢
      • 2012-01-18
      • 1970-01-01
      • 2017-07-07
      • 2016-09-13
      • 2017-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      相关资源
      最近更新 更多