如何有效地写一百个“如果不是”

时间:2018-09-29 20:26:57

标签: java android

我有这个功能

private static string countryToLanguage(String countryCode){

  if (countryCode.equal("AD")) {return "ca"}
  else if (countryCode.equal("AE")) {return "ar"}
  else if (countryCode.equal("AG")) {return "en"}
  ...

}

他们是更有效的方法吗?由于它是一个静态函数,因此我不能使用任何类型的全局变量(如哈希图)

3 个答案:

答案 0 :(得分:14)

  

因为它是一个静态函数,所以我不能使用任何类型的全局变量(如哈希图)

当然可以。

private static final HashMap<String, String> LANGUAGES = new HashMap<>();

static {
  LANGUAGES.put("AD", "ca");
  // TODO: rest of mappings go here
}

private static String countryToLanguage(String countryCode){
  return LANGUAGES.get(countryCode);
}

答案 1 :(得分:2)

使用字符串开关:

switch (countryCode) {
  case "AD": return "ca";
  case "AE": return "ar";
  case "AG": return "en";
  // etc.

  default:
    // Do something if not found,
    // e.g. throw IllegalArgumentException,
    // or return a default value.
}

答案 2 :(得分:1)

如果您的项目中包含番石榴,则可以执行以下操作:

private static final Map<String, Integer> LANGUAGES = ImmutableMap
.of("a", "A", 
    "b", "B", 
    "c", "C");