我正在尝试使我的代码更高效并替换我编写的一堆 if 语句。到目前为止,我的程序基本上是检查输入了什么运算符(例如 +、- 等),然后对其进行计算。例如 1 + 5 给出 6。当程序评估数字之间的符号(在我的示例中为“+”)时,它将检查运算符是什么,然后相应地进行。例如,如果它是一个“+”,它将取 1 并加 5。代码如下:
switch (op) {
case "+": // Addition
return args[0] + args[1];
case "-": // Subtraction
return args[0] - args[1];
case "*": // Multiplication
return args[0] * args[1];
case "/": // Division
return args[0] / args[1];
我想知道是否有可能用某种语句替换整个 block ,该语句将从字符串中检测运算符并将其转换为操作?我意识到对于一些运算符来说,使用 switch 语句可能更容易,但我有很多这样的运算符,在 switch 语句顶部和底部评估运算符之间存在 5-10 毫秒的差异。
最佳答案
在 Java 8 中,您可以使用 lambda 函数映射:
Map<String, IntBinaryOperator> operators = new HashMap<>();
operators.put("+", (a, b) -> a + b);
operators.put("-", (a, b) -> a - b);
operators.put("*", (a, b) -> a * b);
operators.put("/", (a, b) -> a / b);
...
return operators.get(op).apply(args[0], args[1]);
这里有更多的间接性,但它会给你 O(1) 分摊查找时间。
关于java - 替换 If 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28460452/