gpt4 book ai didi

java - Map keys : Enum. valueOf(~) vs String.hashCode() 最快的是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:43 25 4
gpt4 key购买 nike

我很难比较两者。所以我对知识比我更详细的人很有吸引力。我必须将一个功能对象链接到一个名称(当然是 String ...),函数调用是这样的:

serviceInstance.useThis(String name, Object parameter);

到目前为止,我正在考虑此 API 的“后端”的三个选项:

  1. 枚举 + EnumMap
  2. 纯枚举
  3. 哈希表

1 和 2 基本相同,但 1 是为了防止我需要将枚举重用于其他用途。我主要关心的是 Enum.valueOf(String name) 与 String.hashCode() 相比有多快?

这是我正在使用的两个实现:

public class HashMapHandlerType{

static HashMap<String, MyInterfaceProvider> handlers = ~ ;

public void useThis(String name, Object parameter) throws IllegalArgumentException {
MyInterfaceProvider prov = handlers.get(name);
if(prov != null){
prov.get().use(parameter);
}else{
throw new IllegalArgumentException(name);
}
}

}

public class EnumTypeHandler{

public void useThis(String name, Object parameter) throws IllegalArgumentException {
HandlersEnum.valueOf(name).get().use(parameter);
}

}

如果我想使用 Enum 的优点是不用担心 EnumMap 中的冲突。但是 Enum 的 valueOf 是否足够快以战胜 String.hashCode() + 处理哈希函数中的潜在冲突?

最佳答案

当使用 valueOf 时,它基本上是懒惰地创建一个 map 。此外,在创建 map 时,它使用反射来获取值。因为与使用 String.hashCode() 相比,反射调用肯定是昂贵的,在你的情况下,它已经被计算过了。

关于java - Map keys : Enum. valueOf(~) vs String.hashCode() 最快的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24254250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com