我有一些这种格式的对象:
public class Firm {
private int id;
private int workCode;
private String name;
...
}
这些对象是通过API收集的,我无法修改。
id
是唯一的,workCode
可以是720个不同的值之一。这720个代码映射到一个组。所以我的问题是,我想知道这些公司所属的集团。
天真的解决方案是一个开关/案例解决方案,如:
switch(workCode) {
case 1:
case 4:
case 52:
case 77:
case 300:
return "Industry";
case 2:
case 3:
case 600:
case 601:
case 715:
return "Healthcare";
...
}
但这真的是最好的解决方案吗?这个问题一直困扰着我一段时间,所以我希望你们能帮助我。
答案 0 :(得分:2)
为代码创建WorkCodeObject
int
,为扇区创建String
public class WorkCodeObject {
int workcode;
String sector;
}
public class Firm {
private int id;
private WorkCodeObject workCode;
//...
}
答案 1 :(得分:1)
我建议使用枚举:
public enum Group {
INDUSTRY ("Industry", 1, 4, 52, 77, 300),
HEALTHCARE("Healthcare", 2, 3, 600, 601, 715);
// ...
int[] codes;
String name;
Group(String name, int... codes) {
this.codes = codes;
this.name = name;
}
// this map will hold mappings from code to `Group`
// for use in `ofCode()` method
static Map<Integer, Group> groups = new HashMap<Integer, Group>() {{
for (Group g : Group.values()) {
for (Integer c : g.codes)
put(c, g);
}
}};
public String getName() {
return name;
}
static public Group ofCode(int code) {
return groups.get(code);
}
}
当您需要按代码分组名称时,只需致电:
Group.ofCode(4).getName();