Java 集合包含多个 return 选项
Java Set contains multiple return options
我有一段代码工作得很好,但我想知道是否有更好的方法来获得相同的结果。
public enum Status {
ENUM1, ENUM2, ENUM3, ENUM4;
public static Status getStatus(Set<String> set) {
if (set.contains("x")) {
return ENUM1;
}
if (set.contains("y") || set.contains("z")) {
return ENUM2;
}
if (set.contains("c")) {
return ENUM3;
}
return ENUM4;
}
}
所以基本上这就是代码(xyzc 都是常量)。因此该方法接受一组字符串并且必须 return 正确的枚举。有没有更好的方法达到同样的效果?
编辑:方法就是这样,set 从一开始就不会为空,所以不要介意那部分。
Edit2:希望这能解决问题..
您可以使用 HashMap
:
HashMap<String, String> map = new HashMap<>();
// init with
map.put("x", "option 1");
map.put("y", "option 2");
map.put("z", "option 2");
map.put("c", "option 3");
使用:
String option = map.get("x");
您可以考虑将您的转换逻辑封装在 Status 枚举中。类似的东西:
enum Status{
Option1("x"),
Option2("y", "z"),
Option3("c"),
Default;
Status (String ... values){
this.values = values;
}
String [] values;
static Status convert(Set<String> set){
for (Status status : Status.values())
for (String str : status.values)
if (set.contains(str))
return status;
return Default;
}
}
我有一段代码工作得很好,但我想知道是否有更好的方法来获得相同的结果。
public enum Status {
ENUM1, ENUM2, ENUM3, ENUM4;
public static Status getStatus(Set<String> set) {
if (set.contains("x")) {
return ENUM1;
}
if (set.contains("y") || set.contains("z")) {
return ENUM2;
}
if (set.contains("c")) {
return ENUM3;
}
return ENUM4;
}
}
所以基本上这就是代码(xyzc 都是常量)。因此该方法接受一组字符串并且必须 return 正确的枚举。有没有更好的方法达到同样的效果?
编辑:方法就是这样,set 从一开始就不会为空,所以不要介意那部分。
Edit2:希望这能解决问题..
您可以使用 HashMap
:
HashMap<String, String> map = new HashMap<>();
// init with
map.put("x", "option 1");
map.put("y", "option 2");
map.put("z", "option 2");
map.put("c", "option 3");
使用:
String option = map.get("x");
您可以考虑将您的转换逻辑封装在 Status 枚举中。类似的东西:
enum Status{
Option1("x"),
Option2("y", "z"),
Option3("c"),
Default;
Status (String ... values){
this.values = values;
}
String [] values;
static Status convert(Set<String> set){
for (Status status : Status.values())
for (String str : status.values)
if (set.contains(str))
return status;
return Default;
}
}