簡體   English   中英

Java hashmap對字符串哈希的復雜性

[英]Complexity of java hashmap for hash of string

我在看HashMap類中的Java源代碼。

final int hash(Object k) {
    int h = 0;
    if (useAltHashing) {
        if (k instanceof String) {
            return sun.misc.Hashing.stringHash32((String) k);
        }
        h = hashSeed;
    }

    h ^= k.hashCode();

那么,hashmapObject.put(“ somestring”)的時間復雜度是多少? 是O(1)還是O(n),其中n是字符串中的字符數。

在最壞的情況下(實際上,只有當哈希函數不好時,這種情況很少發生),哈希映射中put方法的復雜度為O(N) ,因為盡管我們在鏈表的開頭添加了元素( O(1) ),但我們仍然需要遍歷bucket(鏈接列表)以確定該新元素是否已經存在。
更新:根據Peter Lawery在Java 8中的注釋,其O(log n) 這里描述這種優化但是簡而言之,當存儲桶的大小超過閾值時,樹形圖的即席實現用作存儲桶。 閾值由變量static final int TREEIFY_THRESHOLD = 8; HashMap.java

它通常是地圖的大小的O(1) 字符串的長度為O(N)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM