用于在Java中检查变量名以消除许多IF-ELSE块的正则表达式
我有选项1到选项100,无论如何都要避免If-Else,并使用带有循环的正则表达式?用于在Java中检查变量名以消除许多IF-ELSE块的正则表达式,java,json,enums,Java,Json,Enums,我有选项1到选项100,无论如何都要避免If-Else,并使用带有循环的正则表达式? 以上只是一个例子。我希望用regex替换IF-ELSE,对于枚举,您可以使用valueOf(),在Java8+中使用流(或遍历列表) 公共列表检查和附加列表(列表A){ List listB=新的ArrayList(); listA.stream().forEach(i->listB.add(Enums.ProfileVisibility.valueOf(i)); 返回列表b; } 对于选项1到100?是。我不
以上只是一个例子。我希望用regex替换IF-ELSE,对于枚举,您可以使用
valueOf()
,在Java8+中使用流(或遍历列表)
公共列表检查和附加列表(列表A){
List listB=新的ArrayList();
listA.stream().forEach(i->listB.add(Enums.ProfileVisibility.valueOf(i));
返回列表b;
}
对于
选项1到100?是。我不想要基于选项{1-100}和setValue的100 IF-ELSE块IF条件,同样的选项{1-100}看起来拥有一个选项的数组列表并遍历它会容易得多,将“found”元素从列表A添加到列表BYou应该迭代MYOPTIONS.values()
。虽然实际迭代listA
可能更有效,但使用MYOPTIONS.valueOf()
解析每个值,并在解析成功时添加它。的可能重复。
enum MYOPTIONS {
OPTION1,OPTION2,OPTION3 .....OPTION100
}
class test {
JSONObject obj = new JSONObject(jsonString);
public void checkAndAddEnumToList(){
if(listA.contain(MYOPTIONS.OPTION1.toString())){
map.add(MYOPTIONS.OPTION1.toString(),obj.getJSONArray(MYOPTIONS.OPTION1.toString()));
} else if(listA.contain(MYOPTIONS.OPTION2.toString())){
map.add(MYOPTIONS.OPTION2.toString(),obj.getJSONArray(MYOPTIONS.OPTION2.toString()));
}else if(listA.contain(MYOPTIONS.OPTION3.toString())){
map.add(MYOPTIONS.OPTION3.toString(),obj.getJSONArray(MYOPTIONS.OPTION3.toString()));
}
}
}
public List<MYOPTIONS> checkAndAddEnumToList(List<String> listA) {
List<Enums.ProfileVisibility> listB = new ArrayList<>();
listA.stream().forEach(i -> listB.add(Enums.ProfileVisibility.valueOf(i)));
return listB;
}