这个问题没有特别针对任何编程语言,当然我很高兴听到一些例子。什么是结合switch/if语句的最有效方式
想象一下大量的文件,比如说5000,其中包含各种字母和数字。然后,有一种方法可以接收用作别名的用户输入以显示该文件。如果不在文件夹中排序文件,则方法需要返回与用户提供的别名关联的文件名。
所以我们可以说用户输入 “gd322” 代表名为 “k4e23” 的文件,该方法看起来像
if(input.equals("gd322")){
return "k4e23";
}
现在,想象一下这种方法有4个值:
switch(input){
case gd322: return fw332;
case g344d: return 5g4gh;
case s3red: return 536fg;
case h563d: return h425d;
} //switch on string, no break, no string indicators, ..., pls ignore the syntax, it's just pseudo
记住我们有5000个条目,可能不止有2个条目以g开头。现在,如果用户输入以's'开始,而不是浪费CPU周期检查所有a,b,c,...,我们也可以为此创建另一个开关,然后指向这样的'next'方法:
switch(input[0]){ //implying we could access strings like that
case a: switchA(input);
case b: switchB(input);
// [...]
case g: switchG(input);
case s: switchS(input);
}
所以CPU不必检查所有的人,而是要求一个像这样的方法:
switchG(String input){
switch(input){
case gd322: return fw332;
case g344d: return 5g4gh;
// [...]
}
有计算机科学处理这个问题的任何领域?我不知道该怎么称呼它,因此不知道如何搜索它,但我认为我的想法是大规模的。请移动线程,如果它不属于这里,但我真的想看到你的想法。
编辑:不要引用我对那个“5000”,我不在上面描述的情况,我想谈论这个完全理论,它也可能是3条或300'000,甚至更少或更多
您正在寻找某种查找结构(hashmap,排序列表,搜索树,无论),而不是'switch'语句。 – Bergi 2015-04-05 20:50:56