lit*_*leK 8 java performance conditional if-statement
我有一个方法,用32个if-else语句检查5种不同条件的所有组合(想想真值表).5个不同的字母表示每个在字符串上运行自己的正则表达式的方法,并返回一个布尔值,指示字符串是否与正则表达式匹配.例如:
if(A,B,C,D,E){
}else if(A,B,C,D,!E){
}else if(A,B,C,!D,!E){
}...etc,etc.
Run Code Online (Sandbox Code Playgroud)
但是,它确实影响了我的应用程序的性能(对不起,我不能详细介绍).谁能推荐一种更好的方法来处理这种逻辑?
使用正则表达式的每个方法如下所示:
String re1 = "regex here";
Pattern p = Pattern.compile(re1, Pattern.DOTALL);
Matcher m = p.matcher(value);
return m.find();
Run Code Online (Sandbox Code Playgroud)
谢谢!
Pet*_*rey 18
你可以试试
boolean a,b,c,d,e;
int combination = (a?16:0) + (b?8:0) + (c?4:0) + (d?2:0) + (e?1:0);
switch(combination) {
case 0:
break;
// through to
case 31:
break;
}
Run Code Online (Sandbox Code Playgroud)
将每个条件表示为位标志,测试每个条件一次,并在单个int中设置相关标志.然后打开int值.
int result = 0;
if(A) {
result |= 1;
}
if(B) {
result |= 2;
}
// ...
switch(result) {
case 0: // (!A,!B,!C,!D,!E)
case 1: // (A,!B,!C,!D,!E)
// ...
}
Run Code Online (Sandbox Code Playgroud)