Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在列表列表中查找字符串_Java_Arrays - Fatal编程技术网

Java 在列表列表中查找字符串

Java 在列表列表中查找字符串,java,arrays,Java,Arrays,我有超过15个字符串列表,每个列表包含几个不同的代码。每个列表包含一种特定类型的代码。 我有一个输入代码,必须找出输入代码属于哪个列表,并根据结果返回一个特定字符串。我用if,else if来做这个。下面是示例代码 private static String getCodeType(String inputCode) { if (MyClass.getCodeTypeOneList().contains(inputCode)) { return "CodeType_A"

我有超过15个字符串列表,每个列表包含几个不同的代码。每个列表包含一种特定类型的代码。 我有一个输入代码,必须找出输入代码属于哪个列表,并根据结果返回一个特定字符串。我用if,else 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;
     }
  }
每个列表如下所示: 公共静态列表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);
}