【发布时间】:2011-12-15 01:01:24
【问题描述】:
我有一个方法可以用 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.
但是,它确实影响了我的应用程序的性能(抱歉,我无法详细说明)。谁能推荐一种更好的方法来处理这种逻辑?
每个使用正则表达式的方法如下所示:
String re1 = "regex here";
Pattern p = Pattern.compile(re1, Pattern.DOTALL);
Matcher m = p.matcher(value);
return m.find();
谢谢!
【问题讨论】:
-
如果您向我们展示伪代码以外的其他内容会有所帮助...例如,您是否每次都实际评估所有条件,或者您是否评估一次并且只检查组合?
-
我添加了如何处理每种方法的正则表达式,这有帮助吗?
-
我敢打赌 A、B、C... 都是它们需要评估的重要文件... 将结果保存在本地布尔值中。编辑(用于编辑),因此您评估正则表达式(每次/多次启动都很慢)
-
@littleK:不是真的 - 因为你的
if代码仍然不是有效的 Java... -
你能在方法之间共享 Pattern 实例吗?
标签: java performance if-statement conditional