当前位置: 首页 > 知识库问答 >
问题:

在列表列表中查找字符串

甄志
2023-03-14

我有超过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 static final List<String> getCodeTypeOneList() {

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

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

有没有更好的方法来实现这一点?谢谢

共有1个答案

殳毅
2023-03-14

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

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。获取以查找给定代码的类型。

private static String getCodeType(String inputCode) {
  return codeTypeMap.get(inputCode);
}
 类似资料:
  • 我有一个有点奇怪的问题。 我有一个“word”对象列表。“word”对象包含一个字符串myCWord,它等于传入word的字符串的规范版本。 规范形式是字符串中的排序字符。 现在我有了一个单词列表,在这里我可以访问它们所包含的字符串的规范版本。 我需要一个算法来创建“子列表”,这些列表包含一组单词,这些单词是每个单词的字谜。

  • 问题内容: 背景: 示例列表: 我想检索一个子串是否匹配的元素,例如 码: 如果列表中的任何元素包含模式,则上面的命令会打印出来。 我想打印与子字符串匹配的元素。因此,如果我要检查,我只想从列表中打印。 问题答案: print [s for s in list if sub in s] 如果要用换行符分隔它们: 完整示例,不区分大小写:

  • 我正在使用MongoDB搜索包含列表列表的元素,其中列表中至少有一个项目与搜索参数匹配。 这是我目前拥有的结构的一个例子。 我想搜索数据列表中值为“绿色”的所有项目。 我目前有这个: 但是,不会返回任何结果。

  • 问题内容: 关于你的第一个问题:该代码非常好,并且如果与其中的一个元素相等就可以正常工作。也许你尝试查找与其中一项不完全匹配的字符串,或者你使用的浮点值会导致不准确。 关于第二个问题:如果“查找”列表中的内容,实际上有几种可能的方法。 检查里面是否有东西 这是你描述的用例:检查列表中是否包含某些内容。如你所知,你可以使用in运算符: 过滤集合 即,找到满足特定条件的序列中的所有元素。你可以为此使用

  • 如何找到python列表的中间位置? 这只是一个函数的例子,它可以找到任何列表的中间,你可以用列表理解来做这件事吗? 编辑:这与去掉中间点不同,因为我只想打印出中间值,如果列表是奇数,我想返回两个中间值,就像接受的答案一样。没有像另一个问题那样得到中值,而是得到两个值的平均值。

  • 问题内容: 我为此感到苦恼,因为我确定十几个for循环不是解决此问题的方法: 有一个排序的数字列表,例如 并且我想创建一个包含数字列表的字典,其中数字的差(紧随其后)不超过15。因此输出如下: 我当前的解决方案有点难看(我必须在末尾删除重复项……),我确信它可以用pythonic方式完成。 这就是我现在要做的: 问题答案: 如果您的列表很小,这不是绝对必要的,但是我可能会以“流处理”的方式进行处理