在最近的java面试中,关于if then else的问题被问到了,并且问题的提出方式是,如果给你1000 if else条件,比如
if(condition 1){
task 1
}else if (condition 2){
task 2
}else if (condition 3){
task 3
}
...
else if (condition 1000){
task 1000
}我被要求即兴编写上面的代码。我给出的答案是,它可以通过使用开关来即兴发挥。但面试官并不满意,并要求采取另一种方法。但我无法解释它。所以我想知道有没有更好的方法。
很抱歉问了这么愚蠢的问题,但我真的很想知道答案
发布于 2015-06-21 05:14:55
从面试官的角度来看,这个问题的目的是得到一个答案,这个答案将是下一个问题的分段。
下面是使用集合进行改进的一种方法。对于java interview Generics,Autoboxing将是一个很好的分段,下面的答案正是包括了这一点。你可以通过不同的方式来改进它,但以下就是答案。
List<Integer> myRnage = new ArrayList<Integer>(1000);
for(Integer theIndex : myRnage) {
//do the task for theIndex at this point.
}也可以通过使用Apache库来演示
Range实用程序的使用来回答同样的问题。这是更多的SO link。
发布于 2015-06-21 04:57:23
如果条件是数值比较,您可以创建(或接收)方法列表,以及要执行的方法的索引。这样,您就去掉了所有的if和else,并简单地调用methods[somePosition].Invoke()
PS:上面的代码不是java,它只是一个可以在任何语言中应用的例子。
发布于 2015-06-21 04:57:50
使用哈希表方法键入您的条件,而不是检查每个条件。散列是1阶的,因此它比通过if语句检查所有条件更快。
https://stackoverflow.com/questions/30958778
复制相似问题