作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有 n
个方法,并且得到一个数字 i
,现在我想调用方法 f_i
。
执行此操作的简单方法是使用如下所示的条件:
if (j == 1) f_1();
else if (j == 2) f_2();
...
else if (j == n) f_n();
由于最坏情况下有 n 次比较,因此最坏情况运行时间为 O(n)。
额外:如果函数 f_i 将参数 p[i][1] 传递给 p[i][#parameters of f_i],其中 p 是二维数组,您将如何解决这个问题?
最佳答案
只需使用数组,如下所示:
private static final class Functions {
private static void f0() {
System.out.println(0);
}
private static void f1() {
System.out.println(1);
}
private static void f2() {
System.out.println(2);
}
private static void f3() {
System.out.println(3);
}
}
public static void main(String[] args) throws Exception {
int j = 2;
Runnable[] functions = {
Functions::f0,
Functions::f1,
Functions::f2,
Functions::f3,
};
functions[j].run();
}
如果您的函数返回某些内容和/或接受参数,则您需要为数组使用不同的类型,例如 Consumer
、Supplier
或 Function
.
关于java - 如何在 O(1) 内选择一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58510808/
我是一名优秀的程序员,十分优秀!