我可以使用MultiKeyMap映射非特定字符的键吗

时间:2019-05-02 16:38:46

标签: java

我正在尝试编写将消耗2 Strings并计算MessageCategoryCodeEnum的逻辑:

  • MessageCategory
  • 结果

逻辑如下:

enter image description here

我创建了仅处理Result相等情况的代码,但是我不知道如何处理表中的NOT EQUALS情况。

public class MessageCategory {

    public static MultiKeyMap<String, MessageCategoryCodeEnum> messageCategoryMap = new MultiKeyMap<String, MessageCategoryCodeEnum>();
    static {
        messageCategoryMap.put("Eligibility", "F", MessageCategoryCodeEnum.FATAL);
        messageCategoryMap.put("Validation", "F", MessageCategoryCodeEnum.WARNING);
        messageCategoryMap.put("Eligibility", "U", MessageCategoryCodeEnum.WARNING);
        messageCategoryMap.put("Validation", "U", MessageCategoryCodeEnum.WARNING);
        messageCategoryMap.put("Documentation", "U", MessageCategoryCodeEnum.WARNING);
        messageCategoryMap.put("Servicer Guidance", "U", MessageCategoryCodeEnum.WARNING);
        messageCategoryMap.put("Observation", "U", MessageCategoryCodeEnum.WARNING);
    }
}

1 个答案:

答案 0 :(得分:0)

在我所知的地图中,实际上并没有一种实现“ not”的方法……您可以为每个类别添加一个默认值,然后在地图中找不到结果的情况下,转到设为默认值

public class MessageCategory {

    private static MultiKeyMap<String, MessageCategoryCodeEnum> messageCategoryMap = new MultiKeyMap<String, MessageCategoryCodeEnum>();
    // Let's say '*' is the default state
    private static final String defaultResult = "*";

    static {
        messageCategoryMap.put("Eligibility", "F", MessageCategoryCodeEnum.FATAL);
        messageCategoryMap.put("Validation", "F", MessageCategoryCodeEnum.WARNING);
        messageCategoryMap.put("Eligibility", "U", MessageCategoryCodeEnum.WARNING);
        messageCategoryMap.put("Validation", "U", MessageCategoryCodeEnum.WARNING);
        messageCategoryMap.put("Documentation", "U", MessageCategoryCodeEnum.WARNING);
        messageCategoryMap.put("Servicer Guidance", "U", MessageCategoryCodeEnum.WARNING);
        messageCategoryMap.put("Observation", "U", MessageCategoryCodeEnum.WARNING);

        // Set default value
        messageCategoryMap.put("Eligibility", defaultResult, MessageCategoryCodeEnum.INFORMATION);
    }

    public static MessageCategoryCodeEnum getCodeEnum(String cat, String result) {
        if (messageCategoryMap.containsKey(cat, result) {
             return messageCategoryMap.get(cat, result);
        } else {
             return messageCategoryMap.get(cat, defaultResult);
        }
    }
}