我可以用Python来实现,我的Python代码是:
signs = {"+" : lambda a, b : a + b, "-" : lambda a, b : a - b}
a = 5
b = 3
for i in signs.keys():
print(signs[i](a,b))
输出结果为:
8
2
我如何通过HashMap在Java中做同样的事情呢?
发布于 2018-08-25 16:46:00
为你自己创造一个漂亮的,类型安全的,enum
enum Operator implements IntBinaryOperator {
PLUS("+", Integer::sum),
MINUS("-", (a, b) -> a - b);
private final String symbol;
private final IntBinaryOperator op;
Operator(final String symbol, final IntBinaryOperator op) {
this.symbol = symbol;
this.op = op;
}
public String symbol() {
return symbol;
}
@Override
public int applyAsInt(final int left, final int right) {
return op.applyAsInt(left, right);
}
}
对于其他运算符,您可能需要一个返回double
而不是int
的lambda。
现在,只需将其转储到Map
中
final var operators = Arrays.stream(Operator.values())
.collect(toMap(Operator::symbol, identity()));
但是,对于您的示例,您根本不需要Map
:
Arrays.stream(Operator.values())
.mapToInt(op -> op.applyAsInt(a,b))
.forEach(System.out::println);
使用:
import static java.util.function.Function.identity;
import static java.util.stream.Collectors.toMap;
https://stackoverflow.com/questions/52015479
复制相似问题