Java 集合包含多个 return 选项

Java Set contains multiple return options

我有一段代码工作得很好,但我想知道是否有更好的方法来获得相同的结果。

public enum Status {
    ENUM1, ENUM2, ENUM3, ENUM4;

    public static Status getStatus(Set<String> set) {
        if (set.contains("x")) {
            return ENUM1;
        }
        if (set.contains("y") || set.contains("z")) {
            return ENUM2;
        }
        if (set.contains("c")) {
            return ENUM3;
        }
        return ENUM4;
    }
}

所以基本上这就是代码(xyzc 都是常量)。因此该方法接受一组字符串并且必须 return 正确的枚举。有没有更好的方法达到同样的效果?

编辑:方法就是这样,set 从一开始就不会为空,所以不要介意那部分。

Edit2:希望这能解决问题..

您可以使用 HashMap:

HashMap<String, String> map = new HashMap<>();

// init with
map.put("x", "option 1");
map.put("y", "option 2");
map.put("z", "option 2");
map.put("c", "option 3");

使用:

String option = map.get("x");

您可以考虑将您的转换逻辑封装在 Status 枚举中。类似的东西:

enum Status{
    Option1("x"),
    Option2("y", "z"),
    Option3("c"),
    Default;

    Status (String ... values){
        this.values = values;
    }

    String [] values;

    static Status convert(Set<String> set){
        for (Status status : Status.values())
            for (String str : status.values)
                if (set.contains(str))
                    return status;
        return Default;
    }
}