這個問題沒有特別針對任何編程語言,當然我很高興聽到一些例子。什麼是結合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