有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中向HashMap添加字符串、字符串项的时间复杂度是多少?

如果我们有一个HashMap<String,String> H,我们使用代码H.put("Hello","World")。 时间复杂度是否与在HashMap中使用整型键值对的情况相同?我觉得字符串的性能应该更差,因为对字符串进行散列将是一个O(字符串长度)操作


共 (1) 个答案

  1. # 1 楼答案

    是的,它的性能会更差,因为对字符串进行哈希运算确实比对整数进行哈希运算慢

    事实上,Java对字符串的hashCode()使用了一个特定的公式,您可以看到here,它确实会检查字符串的所有字符,正如您所期望的那样

    在我的Eclipse中hashCode()的代码是:

    public int hashCode() {
        int h = hash;
        if (h == 0 && value.length > 0) {
            char val[] = value;
    
            for (int i = 0; i < value.length; i++) {
                h = 31 * h + val[i];
            }
            hash = h;
        }
        return h;
    }
    

    但你为什么要比较这两件事呢?比较两种算法的复杂度没有多大意义,这两种算法做的事情不同