在HashMap中使用长字符串键或短字符串键之间哪个更好?

时间:2011-10-27 04:37:04

标签: java key hashmap

在HashMap中使用长字符串键或短字符串键之间哪个更好?

示例:

1。 HashMap中的长字符串键

    HashMap<String, String> map = new HashMap<String, String>();
    map.put("[ART.117.4002] ADAPTER RUNTIME (ADAPTER SERVICE): UNABLE TO INVOKE ADAPTER SERVICE", "Cannot invoke adapter service");

注意:长字符串将限制为最多120个字符,并且所有字符串都是大写字母。如果长度超过最大值。字符,它将被截断。

2。 HashMap中的短字符串键

    HashMap<String, String> map = new HashMap<String, String>();
    map.put("B8B77715", "Cannot invoke adapter service");

注意:B8B77715是“[ART.117.4002] ADAPTER RUNTIME(适配器服务)的CRC32:无法调整适配器服务”。

假设HashMap中有4000多个条目。两个在性能方面哪个更好?

2 个答案:

答案 0 :(得分:4)

CRC32是原始值的粗略近似值,但两个不同的原始值可能会产生相同的CRC32值。这使得它们成为HashMap密钥的非常差的候选者,并且它降低数据完整性的事实应该胜过任何潜在的性能问题。绝对使用[ART.117.4002] ... - 为什么在不需要时引入潜在的(如果罕见的)错误?

话虽如此,开头的部分(方括号之间)看起来有可能成为唯一标识符。如果是这样的话,你可以通过在括号之间使用令牌(通过字符串解析)而不是整个大字符串来看到一些(非常边缘的)性能提升。

答案 1 :(得分:0)

很难想象它可能很重要。使用最有意义的东西。