java - 当所有可能的情况都已知时,替代 switch 语句?

标签 java switch-statement

我是 Java 的新手,我偶然发现了以下问题。

我正在从一个 txt 文件中读取电影列表,其中一个字段是表示电影归类的流派的字符串表示,以及表示电影已收到一个流派的 1-5 的数字表示或更多奖项。

嗯。一部电影在此字段中可能具有以下值“12bSt” 这表示这部电影是 b = 传记,S = 体育,2 = 赢得了学院奖。 atm 我这样做:

    String[] genreStringToArray(String genre) {
    char[] genreCharArray = genre.toCharArray(); 
    this.genreArr = new String[genreCharArray.length];
    for (int i = 0; i < genreCharArray.length; i++) {
        switch (genreCharArray[i]) {
            case 'a': genreArr[i] = "Action";       break;
            case 'A': genreArr[i] = "Animation";        break;
            case 'b': genreArr[i] = "biographical";     break;
            case 'c': genreArr[i] = "comedy";       break;
            case 'C': genreArr[i] = "children";     break;
            case 'd': genreArr[i] = "drama";        break;
            case 'D': genreArr[i] = "documentary";      break;
            case 'e': genreArr[i] = "epic";         break;
                                 ..... etc
            case 2:genreArr[i] = "Academy award";       break;
            case 3:genreArr[i] = "Palme d`or";      break;
            case 4:genreArr[i] = "Sight & sound";       break;
            case 5:genreArr[i] = "AFI top 100";     break;
        }
    }
    return genreArr;
}

我的问题是,哪种实现方式会比这更有效?

最佳答案

创建一个 Map(一次),并查找值(仍然循环遍历您的 char 数组)。

Map<Character, String> map= new HashMap<Character, String>();
....
    genreArr[i] = map.get(genreCharArray[i]);
....

附注请注意,您当前的代码中存在错误。 case 2: 应该是 case '2':

关于java - 当所有可能的情况都已知时,替代 switch 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8055737/

相关文章:

java - 为什么我的插件无法加载到我的 Minecraft spigot 服务器上?

java - Spring MVC JSP 应用程序的 WAR 目录结构?

r - switch 语句给出意外的 ',' 错误

c++ - 需要帮助使用 switch 语句创建函数和错误

ios - 如何使用 switch 语句来查找是否按下了 UIButton?

JavaFX WebEngine 设置文档位置

java - 无法从所有分区获取 Kafka 滞后

java - JInternalFrame 内的对话框

java - switch 语句有问题吗?

php - php 和 codeigniter 中 switch 和 case 的使用