Java 如何简化if语句

Java 如何简化if语句,java,Java,我正在使用eclipse编写一个程序。有没有办法简化这个if语句 if(departmentName.equalsIgnoreCase("Business Management")){ departmentName = "SBM"; } if(departmentName.equalsIgnoreCase("Chemical & Life Sciences")){ departmentName = "SCL"; }

我正在使用eclipse编写一个程序。有没有办法简化这个if语句

 if(departmentName.equalsIgnoreCase("Business Management")){
        departmentName = "SBM";
      }
      if(departmentName.equalsIgnoreCase("Chemical & Life Sciences")){
        departmentName = "SCL";
      }
      if(departmentName.equalsIgnoreCase("Design")){
        departmentName = "SDN";
      }
      if(departmentName.equalsIgnoreCase("Engineering")){
        departmentName = "SEG";
      }
      if(departmentName.equalsIgnoreCase("Oral Health Therapy")){
        departmentName = "SHS(AH)";
      }
      if(departmentName.equalsIgnoreCase("Nursing")){
        departmentName = "SHS(N)";
      }

您可以使用
switch
语句,将不区分大小写的部门名称与各种预期值进行比较

if (departmentName == null) return;
switch(departmentName.toLowerCase()) {
    case "business management":
        departmentName = "SBM";
        break;

    case "chemical & life sciences":
        departmentName = "SCL";
        break;

    // other cases
    default:
        "Not Found";
       break;
}
请注意,如果部门名称为
null
,我会返回。您可以随意处理
null
,只要您不让代码尝试打开该null值。

可能是一种方法

但另一种选择是将这些映射存储在
映射中
,然后通过

departmentName = theMap.get(departmentName);
要处理不区分大小写的特性,可以将条目存储在全是小写的键下,并使用

departmentName = theMap.get(departmentName.toLowerCase());

或者查看对的回答,以了解执行不区分大小写部分的其他方法。

自JDK 7以来,您可以在
字符串
对象上使用
开关
语句。 看这个。或者检查@Tim Biegeleisen的答案

使用
开关
不会显著提高性能,尽管您的代码将更加紧凑和可读

如果您使用的是较旧的JDK版本,我建议您更正代码,因为您正在执行可能不必要的检查:

 if(departmentName.equalsIgnoreCase("Business Management")){
     departmentName = "SBM";
 }
 else if(departmentName.equalsIgnoreCase("Chemical & Life Sciences")){
     departmentName = "SCL";
 }
 else if(departmentName.equalsIgnoreCase("Design")){
     departmentName = "SDN";
 }
 else if(departmentName.equalsIgnoreCase("Engineering")){
     departmentName = "SEG";
 }
 else if(departmentName.equalsIgnoreCase("Oral Health Therapy")){
     departmentName = "SHS(AH)";
 }
 else if(departmentName.equalsIgnoreCase("Nursing")){
     departmentName = "SHS(N)";
 }

作为侧节点。使其更空保存:“化学和生命科学”。equalsIgnoreCase(部门名称)使用switch case您可以使用switch语句实现此目的:除非您不比较成百上千的
字符串,否则您不会注意到
switch
优化,或者在数千次迭代的紧密循环中运行
开关。:-)但这和它不在那里不一样。编辑得好。