我有超过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;
}
(其他代码类型的类似列表)
有没有更好的方法来实现这一目标?感谢
答案 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);
}