jus*_*guy 0 java switch-statement java-8
我有以下代码:
String fullName = "";
switch(name) {
case "name1":
fullName = String.format("%s %s", name, "surname1");
break;
case "name2":
fullName = String.format("%s %s", name, "surname2");
break;
case "name3":
fullName = String.format("%s %s", name, "surname3");
break;
...
}
Run Code Online (Sandbox Code Playgroud)
(case后面有一个break语句,我只是没有写在这里)
所以问题是这样的:
有 16 个不同的 case 语句,除了 的参数之外,它们都具有完全相同的代码String.format()
。
有什么办法可以简化这段代码吗?
注意:Java 8 是必须的
好吧,如果您的所有案例都具有这种确切的形式,那么您可以简单地执行以下操作:
String surname;
switch (name) {
case "name1":
surname = "surname1";
break;
case "name2":
surname = "surname2";
break;
default:
surname = "";
break;
}
String fullname = String.format("%s %s", name, surname);
Run Code Online (Sandbox Code Playgroud)
或者使用 aMap
来查找值:
Map<String, String> mapping = new HashMap<>();
mapping.put("name1", "surname1");
mapping.put("name2", "surname2");
mapping.put("name3", "surname3");
String surname = mapping.get(name); // Assuming name is always a valid map entry
String fullname = String.format("%s %s", name, surname);
Run Code Online (Sandbox Code Playgroud)
其他地方概述的方法Map
可能是最适合 Java 8 的方法,但请注意,从 Java 14 开始,您可以使用 switch 表达式:
String surname = switch (name) {
case "name1" -> "surname1";
case "name2" -> "surname2";
...
};
String fullName = String.format("%s %s", name, surname);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
325 次 |
最近记录: |