哪个更有效,使用HashMap或If语句导航

时间:2012-07-31 15:44:48

标签: gwt if-statement hashmap mvp

我有一个GWT Web应用程序,它使用URL进行导航和MVP模式。对于每个URL,我都有一个要调用的演示者。我有大约20个不同的演示者,并决定调用哪一个,我使用像

这样的条件
if (view.equals("vue1")){
   presenter = new presenter1();
}else if(view.equals("vue2")){
   presenter = new presenter2();
}else if(view.equals("vue3") || vue.equals("vue4") || vue.equals("vue5")){
   presenter = new presenter345();
}
...

我尝试了另一种方法,即在应用程序启动时加载HashMap。地图包含视图作为键,Presenter作为值。但它变得复杂,因为我经常有多个键(视图)指向同一个Presenter。因此,对于上面示例中的最后一个条件,我将执行以下操作:

map.put("vue3",new Presenter345);
map.put("vue4",new Presenter345);
map.put("vue5",new Presenter345);

问题:

1-哪一个是高效的,知道代码在客户端(JavaScript)?

2-还有另一种选择吗?

1 个答案:

答案 0 :(得分:2)

如果你只有20个左右,我真的不会那么担心。我会使用switch语句,并尝试首先包含最可能的视图。或者保留if语句,然后再次测试最可能的条件。但我想一个hashmap几乎会给你一个平均O(1),而if语句或开关会给你平均O(n)