我是 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/