代码之家  ›  专栏  ›  技术社区  ›  wishi

哈希图和事例构造

  •  1
  • wishi  · 技术社区  · 15 年前

    出于可读性的原因,我试图避免使用基于CHAR的实例结构,使用Java 6。我不能切换到7喷气机…

    Map<String, String> map = new HashMap<String, String>() {
        {
            put("foo", "--foo");
                    put("bar), "--bar");
            ... 
        }
        private static final long serialVersionUID = 1L; // java problem
    };
    

    就我所知,这可能是问题的一部分。目前我正在使用if构造:

    if (!map.containsValue(args[0])) {
        logger.error("Unknown parameter:  " + args[0]);
            ...
    

    我处理大约30个参数。在任何情况下,数量都在增加。

    甚至可以定义 switch 用Java 6中的枚举或哈希映射构造?

    3 回复  |  直到 12 年前
        1
  •  1
  •   mdma    15 年前

    如果以同样的方式处理超过30个参数,那么需要某种循环。例如:

    for (int i=0; i<args.length; i++)
    {
       String param = args[i];
       if (!map.containsValue(param))
          logger.error("Unknown parameter:  " + param);
       .. handle argument
    }
    

    看起来您正在分析命令行参数。例如,有一些很好的库提供灵活的命令行分析 args4j . 使用args4j,您可以创建数据模型,并让它将数据中的字段映射到命令行参数。

        2
  •  1
  •   Community CDub    8 年前

    我想 this question 有一些可能对你有帮助的答案

        3
  •  0
  •   Community CDub    8 年前

    Using Strings in a switch statement 会有空的 in Java 7 .

    对于命令行参数的中等或复杂解析,我强烈建议使用 Commons-CLI 它提供了一个很好的API,使您更容易处理这个问题。安 example of it's usage :

    // create Options object
    Options options = new Options();
    
    // add t option
    options.addOption("t", false, "display current time");
    ...
    
    CommandLineParser parser = new PosixParser();
    CommandLine cmd = parser.parse( options, args);
    
    if(cmd.hasOption("t")) {
        // print the date and time
    }
    else {
        // print the date
    }