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

Gwt 使用HashMap或If语句导航哪个更有效,gwt,if-statement,hashmap,mvp,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.equa

我有一个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。地图包含视图作为键,显示者作为值。但它变得复杂了,因为我经常有多个键(视图)指向同一个演示者。对于上面示例中的最后一个条件,我将执行如下操作:

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

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


2-还有其他选择吗?

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

我最终使用了一个Map,因为它的复杂性较低O(1),并且为了清晰和可重用性。