【发布时间】:2014-04-12 00:31:00
【问题描述】:
是否有可能实现散列,其中键是String,值是function。作为背景,我有一个程序有很多字符串比较,即
if(s.equalsIgnoreCase("london")
functionA();
else if(s.equalsIgnoreCase("moscow")
functionB();
else if(s.equalsIgnoreCase("delhi")
functionC();
...
等等。
但是这种实现是非常昂贵的(theta(n)),因为String 比较是针对所有if 语句进行的。如果我们有一个哈希实现,其中键是String,值是function,我们可以调用类似
function = hash.Get("moscow");
function();
它的复杂度很好(theta(log(1)))。
可以这样做吗?
【问题讨论】:
-
您使用什么语言? Java 还是 C++?
-
目前我正在使用java。但我认为答案对任何语言都有帮助。
-
Java 和 C++ 是完全不同的语言,具有完全不同的特性。选择一个。
-
我已经从标签中删除了 C++。请具体回答java