在列表列表中查找字符串

时间:2017-10-24 23:37:33

标签: java arrays

我有超过15个字符串列表,每个列表包含几个不同的代码。每个列表包含一种特定类型的代码。 我有一个输入代码,必须找出输入代码所属的列表,并根据结果返回一个特定的字符串。我曾经使用if,否则如果这样做。以下是示例代码

private static String getCodeType(String inputCode) {

    if (MyClass.getCodeTypeOneList().contains(inputCode)) {
        return "CodeType_A";
    } else if (MyClass.getCodeTypeTwoList().contains(inputCode)) {
        return "CodeType_B";
    } else if (MyClass.getCodeTypeThreeList().contains(inputCode)) {
        return "CodeType_C";
    } else if (MyClass.getCodeTypeFourList().contains(inputCode)) {
        return "CodeType_D";
    } else if (MyClass.getCodeTypeFiveList().contains(inputCode)) {
        "CodeType_E;
    } else if (MyClass.getCodeTypeixList().contains(inputCode)) {
        return "CodeType_F";
    } else if (MyClass.getWithDrawalCodeTypeList().contains(inputCode)) {
        return "CodeType_G";
    } 
     // similar 10 more if conditions
     else {
        return null;
     }
  }

每个列表如下所示: public static List codeTypeOneList = new ArrayList();

public static final List<String> getCodeTypeOneList() {

    codeTypeOneList.add("AFLS");
    codeTypeOneList.add("EAFP");
    codeTypeOneList.add("ZDTC");
    codeTypeOneList.add("ZFTC");
    codeTypeOneList.add("ATCO");
    return codeTypeOneList;
}

(其他代码类型的类似列表)

有没有更好的方法来实现这一目标?感谢

1 个答案:

答案 0 :(得分:0)

作为一次性步骤,构建地图:

Map<String, String> codeTypeMap = new HashMap<>();
for (String key : getCodeTypeOneList()) {
  codeTypeMap.put(key, "CodeType_A");
}
for (String key : getCodeTypeTwoList()) {
  codeTypeMap.put(key, "CodeType_B");
}
// ...

(您需要确保多个列表中没有列表元素;或者按反向首选项的顺序添加它们,以便以后的代码类型覆盖之前的代码类型。)

然后只需使用codeTypeMap.get查找给定代码的类型。

private static String getCodeType(String inputCode) {
  return codeTypeMap.get(inputCode);
}