Java 在列表列表中查找字符串
我有超过15个字符串列表,每个列表包含几个不同的代码。每个列表包含一种特定类型的代码。 我有一个输入代码,必须找出输入代码属于哪个列表,并根据结果返回一个特定字符串。我用if,else if来做这个。下面是示例代码Java 在列表列表中查找字符串,java,arrays,Java,Arrays,我有超过15个字符串列表,每个列表包含几个不同的代码。每个列表包含一种特定类型的代码。 我有一个输入代码,必须找出输入代码属于哪个列表,并根据结果返回一个特定字符串。我用if,else if来做这个。下面是示例代码 private static String getCodeType(String inputCode) { if (MyClass.getCodeTypeOneList().contains(inputCode)) { return "CodeType_A"
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;
}
}
每个列表如下所示:
公共静态列表codeTypeOneList=新ArrayList()
public静态最终列表getCodeTypeOneList(){
codeTypeOneList.add(“AFLS”);
添加(“EAFP”);
添加(“ZDTC”);
codeTypeOneList.add(“ZFTC”);
代码类型列表。添加(“ATCO”);
返回代码类型列表;
}
(其他代码类型的类似列表)
有没有更好的方法来实现这一点?谢谢作为一次性步骤,构建地图:
Map<String, String> codeTypeMap = new HashMap<>();
for (String key : getCodeTypeOneList()) {
codeTypeMap.put(key, "CodeType_A");
}
for (String key : getCodeTypeTwoList()) {
codeTypeMap.put(key, "CodeType_B");
}
// ...
作为一次性步骤,构建地图:
Map<String, String> codeTypeMap = new HashMap<>();
for (String key : getCodeTypeOneList()) {
codeTypeMap.put(key, "CodeType_A");
}
for (String key : getCodeTypeTwoList()) {
codeTypeMap.put(key, "CodeType_B");
}
// ...
您可以使用java 8流并将其展平到一个列表。我们使用java 7,不能使用java 8。您可以使用java 8流并将其展平到一个列表。我们使用java 7,不能使用java 8。地图不允许重复密钥。添加不同的键将超越先前的代码。确实如此。但是您当前的代码也不允许重复密钥:它将始终返回第一个匹配的密钥。这正是我在“(youneedto…)一段中提出的观点。如果密钥已经过多,我如何检索代码类型?我的意思是,假设CodeTypeOneList包含5个不同的代码,当我将它们添加到map中时,key将是最后输入的代码。在检索代码时,输入可以是所有可能代码中的任意一个代码。但这些“ZDTC”等是关键。这是hashmap的关键。所以在hashmap中,ZDTC返回代码类型_A。现在还不清楚这个解决方案无法达到的目的是什么。例如,您有ZDTC,并希望为其返回代码类型_A。事实上,你的列表对于整个事情来说是完全不必要的,你可以把它放在(“ZDTC”,“Codetype_A”);etc在一个列表中,可以处理的代码要少得多,所以我认为您需要澄清这个问题。在您的示例解决方案中,也不能为ZDTC返回两种不同的代码类型。HashMap不允许重复密钥。添加不同的键将超越先前的代码。确实如此。但是您当前的代码也不允许重复密钥:它将始终返回第一个匹配的密钥。这正是我在“(youneedto…)一段中提出的观点。如果密钥已经过多,我如何检索代码类型?我的意思是,假设CodeTypeOneList包含5个不同的代码,当我将它们添加到map中时,key将是最后输入的代码。在检索代码时,输入可以是所有可能代码中的任意一个代码。但这些“ZDTC”等是关键。这是hashmap的关键。所以在hashmap中,ZDTC返回代码类型_A。现在还不清楚这个解决方案无法达到的目的是什么。例如,您有ZDTC,并希望为其返回代码类型_A。事实上,你的列表对于整个事情来说是完全不必要的,你可以把它放在(“ZDTC”,“Codetype_A”);etc在一个列表中,可以处理的代码要少得多,所以我认为您需要澄清这个问题。在您的示例解决方案中,也不能为ZDTC返回两种不同的代码类型。
private static String getCodeType(String inputCode) {
return codeTypeMap.get(inputCode);
}