有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是将字符串映射到其对应值的最佳方法

我想写一个方法,将输入字符串映射到其相应的值,例如:当我输入separator=“分号”时,我想将其值返回为“;”。我现在做的是使用switch case:

    switch (separator) {
        case "Semicolon":
            return ';';
        case "Comma":
            return ',';
        default:
            return '-';
        }

我只是想问一下,除了在这里使用switch case之外,还有没有其他解决方案具有相同的效果,但代码行可能更短。提前谢谢


共 (2) 个答案

  1. # 1 楼答案

    答案就在于你的措辞:映射。例如:

    Map<String, Character> operatorsByName = new HashMap<>();
    operatorsByName.put("Comma", ',');
    

    等等。或者使用Java9,使用新的of()方法从“文本”创建映射

    然后你可以根据输入的字符串get()。或者,enumEnumSet也可以派上用场

  2. # 2 楼答案

    更优雅的方法是使用枚举:

    public enum Separator {
       COMMA(","),
       SEMICOLON(";");
    
     private String symbol;
    
     Separator(String code) {
       this.symbol = code;
     } 
    
     public String symbol() {
        return this.symbol;
     }
    
    
    }
    

    然后你可以像这样使用它:

     String comma = Separator.COMMA.symbol();
    

    正如建议的那样,你也可以使用:

    Separator.valueOf("COMMA").symbol()
    

    也许这样,你根本不需要任何开关/外壳。 我可以想象,你可以通过所需的“正确”分隔符