使用列表中的值作为switch / case语句中的大小写

时间:2017-10-12 02:01:39

标签: java arraylist switch-statement

我有一个ArrayList,其中包含以下字符串:[name, age, gender, salary]有没有办法可以将我的ArrayList中的值用作case表达式?明显的答案是否定的,因为case表达式必须是常量表达式。但是,我想知道如果我不能使用switch / case,最好的方法是什么。

要清楚,预期的行为是这样的:

switch (parameter) {
    case XXX:
        // some code here
    case YYY:
        // some code here
}

我希望XXX为名称,YYY为性别,它们都来自ArrayList。如果用switch / case无法做到这一点,我愿意使用if / else。我怎么能这样做?感谢。

1 个答案:

答案 0 :(得分:2)

如果你真的想使用一个switch case并且不能使用非本机java对象,我会尝试一下这样的:

public void test(){

    String[] array = {"name", "age", "gender", "salary"};

    String value = "name";

    switch(indexOf(value, array)){
        case 0:
            //code
            break;
        case 1:
            //code
            break;
        case 2:
            //code
            break;    
        case 3:
            //code
            break;
        default:
            //value wasnt in array
    }
}

public int indexOf(String value, String[] array){
    for(int i = 0; i < array.length; i++){
        if(array[i].equals(value)){
            return i;
        }
    }
    //return a place holder value
    return -1;
}